import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; public class BoxLayoutDemo 

private JFrame jframe; 
private JPanel jp1; 
private JButton jb1,jb2,jb3,jb4; 
public BoxLayoutDemo() 

jframe=new JFrame("BoxLayout演示窗口"); 
Container c=jframe.getContentPane(); jp1=new JPanel();//@@@@@@@ 
jp1.setLayout(new BoxLayout(jp1,BoxLayout.Y_AXIS)); 
jb1=new JButton("按钮1"); 
jb2=new JButton("按钮2"); 
jb3=new JButton("按钮3"); 
jb4=new JButton("按钮4"); 
jp1.add(jb1);jp1.add(jb2);jp1.add(jb3);jp1.add(jb4); c.add(jp1); jframe.setSize(300,300); 
jframe.setLocation(300,200); 
jframe.setVisible(true); 
jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE); 
} public static void main(String[] args) 

new BoxLayoutDemo(); 


我不太明白程序里我标注@@@@的地方,为什么我把那上下两句改为一句:jp1=new JPanel(new BoxLayut(jp1,BoxLayout.Y_AXIS)); 就无法运行了呢?但是编译的时候可以?如果我使用GridLayout布局这种写法就可以了呢 这是怎么回事啊??详细些!谢 

解决方案 »

  1.   

    jp1=new JPanel(new BoxLayut(jp1,BoxLayout.Y_AXIS)); 
    只是实力化一个棉板,但像你这样,并没有给这个面板设置任何布局啊
    你应该经常查查帮助文档,看看关于面板的构造方法都有哪些!
      

  2.   

    我在另一个程序中有这样的语句:jp1=new JPanel(new GridLayout(4,4));
    这就是正确的 这是为什么?
    这里GridLayout和BoxLayout不都是一种布局吗?