日期:2014-05-20  浏览次数:20637 次

本人新手,想问个swing的问题
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());

this.jContentPane.add(new listpanel(this.jFrame));
}
return jContentPane;
}
我想问的是为什么一定要jContentPane.setLayout(new BorderLayout());之后才有按钮点击换页面,如果是jContentPane.setLayout(null);就没有的,还有this.jContentPane.add(new listpanel(this.jFrame));这句话的意思是说在容器里面添加一个面板?

------解决方案--------------------
jContentPane.setLayout(null)
即不使用布局管理器,需要你自己指定每个控件的大小和位置(setBounds)

jContentPane.setLayout(new BorderLayout())
使用了 BorderLayout 布局管理器,控件位置和大小由布局管理器控制

this.jContentPane.add(new listpanel(this.jFrame));
在 BorderLayout 布局管理器下,默认为添加到 jContentPane 的中部位置