下面是一个自定义的对角线布局管理器程序
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,不知如何解决,请教大家。
       ^

解决方案 »

  1.   

    heigth拼错->height
    wigth拼错->width
    preferrdLayoutSize拼错->preferredLayoutSize导致没有实现接口,才会有这个错误(第一处错误J_DiagonalLayout 必须声明为 abstract; 它没有在 J_DiagonalLayout 中定义 addLayoutComponent(java.lang.String,java.awt.Component) 
    public class J_DiagonalLayout implements LayoutManager)
      

  2.   

    还有点拼写错误,我就不一一写了
    下面是改好的代码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);
                }
            }
        }
    }
      

  3.   

    这种拼写错误,如果用IDE的话很好查的出的
      

  4.   

    都是拼写错误,下面是改正过来的程序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 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); 
        } 
        } 
    }