最近想做个小项目。但是老是出问题,不知道是怎么回事:
我写了几个继承自JPanel的类。在一个JFrame里有个JPanel(Eclipse自动生成的)。现在我想在这Eclipse自动生成的JPanel左边设置一个导航栏,右边是内容。本来是个简单的事,但问题就在这了:
我加入一个自写的JPanel类之后,显示填充整个Eclipse的JPanel:
代码:
eqMain是一个继承自JPanel类的对象;
private JPanel getJContentPane() {
if (jContentPane == null)
{
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(eqMain);
}
return jContentPane;
}
没什么问题,就是填充了整个Eclipse自生成的JPanel(jContentPane).
我想左边加入个导航栏,于是如下:
leftPanel也是一个继承自JPanel类的对象;
private JPanel getJContentPane() {
if (jContentPane == null)
{
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(leftPanel,"East");
jContentPane.add(eqMain,"West");
}
return jContentPane;
}
显示的结果出乎意料,什么东西都没有。
只有空空的一个JFrame。
这是怎么回事啊?
也就是说,我不加方位,直接add(eqMain);
除了不合要求外没问题。
但是我设了方位后 add(eqMain,"West");
什么东西也没有了。不是只有我的会,我这项目是老师讲课要求做的,
当时老师也是这样子,最后不用BorderLayout这布局,改用无布局。
但我想没理由啊。这么回事啊?请教高手!
------解决方案--------------------
JFrame默认布局方式是边界布局,添加组件的时候如果没有指定加到哪,默认的是加到中间,也就是说你后面加的组件会把前面的给覆盖,JPanel的话默认布局方式是流式布局,当然我们都是可以看具体需求来设置他们的布局方式的
------解决方案--------------------
jContentPane.add(leftPanel,BorderLayout.EAST);
试试可以不