下面是一个自定义的对角线布局管理器程序
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;public class J_DiagonalLayout implements LayoutManager
{
public void addLayoutCompontent(String name,Component comp)
{
}
public void removalLayoutCompontent(Component comp)
{
}
public Dimension preferrdLayoutSize(Container parent)
{
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(s.left+s.right,s.top+s.bottom);
Component c;
int n=parent.getComponentCount();
for(int i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
dp.width+=d.width;
dp.heigth+=d.heigth;
}
}
return dp;
}
public Dimension minimumLayoutSize(Container parent)
{
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(0,0);
Component c;
int n=parent.getComponentCount();
for(int i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
if(d.width>dp.width)
dp.width+=d.width;
if(d.heigth>dp.heigth)
dp.heigth+=d.heigth;
}
}
dp.width +=(s.left+s.right);
dp.height +=(s.top+s.bottom);
return dp;
}
public void layoutContainer(Container parent)
{
int i;
int n=parent.getComponentCount();
Component c;
Insets s=parent.getInsets();
Dimension d;
Dimension dp=parent.getSize();
Dimension dr=preferredLayoutSize(parent);
Dimension dc=new Dimension(s.left,s.top);
Dimension dg=new Dimension(dp.width-dr.width,dp.heigth-dr.heigth);
if(n>1)
{
dg.width /=(n-1);
dg.heigth /=(n-1);
}
for( i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
c.setBounds(dc.width,dc.heigth,d.wigth,d.height);
dc.width +=(dg.wigth+d.wigth);
dc.height +=(dg.heigth+d.heigth);
}
}
}
} 共有十六处错误。主要是第一处错误J_DiagonalLayout 必须声明为 abstract; 它没有在 J_DiagonalLayout 中定义 addLayoutComponent(java.lang.String,java.awt.Component)
public class J_DiagonalLayout implements LayoutManager,不知如何解决,请教大家。
^
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;public class J_DiagonalLayout implements LayoutManager
{
public void addLayoutCompontent(String name,Component comp)
{
}
public void removalLayoutCompontent(Component comp)
{
}
public Dimension preferrdLayoutSize(Container parent)
{
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(s.left+s.right,s.top+s.bottom);
Component c;
int n=parent.getComponentCount();
for(int i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
dp.width+=d.width;
dp.heigth+=d.heigth;
}
}
return dp;
}
public Dimension minimumLayoutSize(Container parent)
{
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(0,0);
Component c;
int n=parent.getComponentCount();
for(int i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
if(d.width>dp.width)
dp.width+=d.width;
if(d.heigth>dp.heigth)
dp.heigth+=d.heigth;
}
}
dp.width +=(s.left+s.right);
dp.height +=(s.top+s.bottom);
return dp;
}
public void layoutContainer(Container parent)
{
int i;
int n=parent.getComponentCount();
Component c;
Insets s=parent.getInsets();
Dimension d;
Dimension dp=parent.getSize();
Dimension dr=preferredLayoutSize(parent);
Dimension dc=new Dimension(s.left,s.top);
Dimension dg=new Dimension(dp.width-dr.width,dp.heigth-dr.heigth);
if(n>1)
{
dg.width /=(n-1);
dg.heigth /=(n-1);
}
for( i=0;i<n;i++)
{
c=parent.getComponent(i);
if(c.isVisible())
{
d=c.getPreferredSize();
c.setBounds(dc.width,dc.heigth,d.wigth,d.height);
dc.width +=(dg.wigth+d.wigth);
dc.height +=(dg.heigth+d.heigth);
}
}
}
} 共有十六处错误。主要是第一处错误J_DiagonalLayout 必须声明为 abstract; 它没有在 J_DiagonalLayout 中定义 addLayoutComponent(java.lang.String,java.awt.Component)
public class J_DiagonalLayout implements LayoutManager,不知如何解决,请教大家。
^
wigth拼错->width
preferrdLayoutSize拼错->preferredLayoutSize导致没有实现接口,才会有这个错误(第一处错误J_DiagonalLayout 必须声明为 abstract; 它没有在 J_DiagonalLayout 中定义 addLayoutComponent(java.lang.String,java.awt.Component)
public class J_DiagonalLayout implements LayoutManager)
下面是改好的代码import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
public class J_DiagonalLayout implements LayoutManager {
public void addLayoutComponent(String name, Component comp) {
} public void removeLayoutComponent(Component comp) {
} public Dimension preferredLayoutSize(Container parent) {
Dimension d = null;
Insets s = parent.getInsets();
Dimension dp = new Dimension(s.left + s.right, s.top + s.bottom);
Component c;
int n = parent.getComponentCount();
for (int i = 0; i < n; i++) {
c = parent.getComponent(i);
if (c.isVisible()) {
d = c.getPreferredSize();
dp.width += d.width;
dp.height += d.height;
}
}
return dp;
} public Dimension minimumLayoutSize(Container parent) {
Dimension d = null;
Insets s = parent.getInsets();
Dimension dp = new Dimension(0, 0);
Component c;
int n = parent.getComponentCount();
for (int i = 0; i < n; i++) {
c = parent.getComponent(i);
if (c.isVisible()) {
d = c.getPreferredSize();
if (d.width > dp.width)
dp.width += d.width;
if (d.height > dp.height)
dp.height += d.height;
}
}
dp.width += (s.left + s.right);
dp.height += (s.top + s.bottom);
return dp;
} public void layoutContainer(Container parent) {
int i;
int n = parent.getComponentCount();
Component c;
Insets s = parent.getInsets();
Dimension d;
Dimension dp = parent.getSize();
Dimension dr = preferredLayoutSize(parent);
Dimension dc = new Dimension(s.left, s.top);
Dimension dg = new Dimension(dp.width - dr.width, dp.height - dr.height);
if (n > 1) {
dg.width /= (n - 1);
dg.height /= (n - 1);
}
for (i = 0; i < n; i++) {
c = parent.getComponent(i);
if (c.isVisible()) {
d = c.getPreferredSize();
c.setBounds(dc.width, dc.height, d.width, d.height);
dc.width += (dg.width + d.width);
dc.height += (dg.height + d.height);
}
}
}
}
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager; public class J_DiagonalLayout implements LayoutManager {
public void addLayoutCompontent(String name,Component comp) { }
public void removalLayoutCompontent(Component comp) { }
public Dimension preferredLayoutSize(Container parent) {
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(s.left+s.right,s.top+s.bottom);
Component c;
int n=parent.getComponentCount();
for(int i=0;i <n;i++) {
c=parent.getComponent(i);
if(c.isVisible()) {
d=c.getPreferredSize();
dp.width += d.width;
dp.height += d.height;
}
}
return dp;
}
public Dimension minimumLayoutSize(Container parent)
{
Dimension d=null;
Insets s=parent.getInsets();
Dimension dp=new Dimension(0,0);
Component c;
int n=parent.getComponentCount();
for(int i=0;i <n;i++) {
c=parent.getComponent(i);
if(c.isVisible()) {
d=c.getPreferredSize();
if(d.width>dp.width)
dp.width += d.width;
if(d.height>dp.height)
dp.height += d.height;
}
}
dp.width +=(s.left+s.right);
dp.height +=(s.top+s.bottom);
return dp;
}
public void layoutContainer(Container parent) {
int i;
int n=parent.getComponentCount();
Component c;
Insets s=parent.getInsets();
Dimension d;
Dimension dp=parent.getSize();
Dimension dr=preferredLayoutSize(parent);
Dimension dc=new Dimension(s.left,s.top);
Dimension dg=new Dimension(dp.width-dr.width,dp.height-dr.height);
if(n>1) {
dg.width /=(n-1);
dg.height /=(n-1);
}
for( i=0;i <n;i++) {
c=parent.getComponent(i);
if(c.isVisible()) {
d=c.getPreferredSize();
c.setBounds(dc.width,dc.height,d.width,d.height);
dc.width +=(dg.width+d.width);
dc.height +=(dg.height+d.height);
}
}
}
}