North 跟 South 爲什麽不能加一個布局管理器為null的Panel呢?
貌似必須要有布局管理器,什麽原理?
而中間的就可以加一個布局管理器為null的Panel。百思不得其解呀

解决方案 »

  1.   

    答:不可能.
    楼主肯定是代码写得有些问题.
    如:
    JPanel p1=new JPanel();
            p1.setLayout(null);//null布局管理器
            p1.setPreferredSize(new Dimension(300,50));//<==这个要加上
    如下程序就是在BorderLayout的North 跟 South 上各加一个布局管理器為null的Panel.
    参考代码:
    package test;import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    public class Computor {
        public static void main(String[] args) {
            new ComputorFrame();
        }}class ComputorFrame extends JFrame{    JLabel jl1,jl2,jl3,jl4,jl5,jl6;
        
        public ComputorFrame(){
            super("计算器");
            
            Container container=getContentPane();
            jl1=new JLabel("被乘数");
            jl2=new JLabel("乘数");
            jl3=new JLabel("积");
            JPanel p1=new JPanel();
            p1.setLayout(null);//null布局管理器
            p1.setPreferredSize(new Dimension(300,50));
            p1.add(jl1);
            p1.add(jl2);
            p1.add(jl3);
            jl1.setSize(50, 40);        
            jl1.setLocation(50, 0);
            jl2.setSize(50, 40);
            jl2.setLocation(100, 0);
            jl3.setSize(50, 40);
            jl3.setLocation(150, 0);        jl4=new JLabel("被除数");
            jl5=new JLabel("除数");
            jl6=new JLabel("商");
            JPanel p2=new JPanel();
            p2.setLayout(null);//null布局管理器
            p2.setPreferredSize(new Dimension(300,50));
            p2.add(jl4);
            p2.add(jl5);
            p2.add(jl6);
            jl4.setSize(50, 40);
            jl4.setLocation(50, 0);
            jl5.setSize(50, 40);
            jl5.setLocation(100, 0);
            jl6.setSize(50, 40);
            jl6.setLocation(150, 0);
            container.add(p1,BorderLayout.NORTH);      
            container.add(p2,BorderLayout.SOUTH);
            
            setSize(300,300);
            setVisible(true);
        }
    }
      

  2.   

    答:你将我的1楼的程序代码中的如下两行代码注解掉,就会出现楼主说的情况了
    p1.setPreferredSize(new Dimension(300,50));
    p2.setPreferredSize(new Dimension(300,50));
      

  3.   

    layout设为null之后,要手动操办具体显示细节
    诸如setSize setBounds setLocation
      

  4.   

    我的意思是我没碰到过不能加null布局JPanel的情况,你上面的错误,我还没有犯过,呵呵,谢谢提示。