我试图在一个单一的框架中设计一个有4个不同面板的接口。我在下面的代码中包含了2个面板描述。四个不同布局的面板
下面是我的代码部分:
public class finalFrame extends JFrame {
PanelA a = new PanelA()
PanelB b = new PanelB()
// ...
public finalFrame() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//...
//...
//...
add(a);
add(b);
}
}
class PanelA extends JPanel {
JButton bt = new JButton();
add(bt);
//...
}
class PanelB extends JPanel {
// ...
//... }
class Program {
public static void main(String [] args) {
finalFrame fr = new finalFrame();
}
}
此代码似乎不工作(只显示在一个奇怪的大小(不是我想要的)最后一个面板)。然而,当我在框架类(而不是单独的面板类)内设置不同的面板时,它完美地工作。为什么我不能使用不同的面板类,然后将它们全部添加到最终的Frame类中?如果我在框架类中设置面板并包含框架布局,那么它就可以工作(正如我刚刚提到的那样)。但是,如果我在框架类中包含设置的面板,但不包含框架布局,那么它仅使用框架布局显示最后一个面板。为什么它不描绘任何其他面板?
谢谢!
默认疗法的边界'JFrame'是'FlowLayout'。不是吗? – Sarz
'JFrame'作为'FlowLayout'的边界?默认情况下'JFrame'的'LayoutManager'是'BorderLayout'。该文档说:_默认的内容窗格将有一个BorderLayout管理器设置它。因为'JFrame'中的add()'方法现在直接将'components'添加到它的'content pane',它就可以工作。它不是'FlowLayout'。 –
为什么它只显示我添加的最后一个面板?这是否与默认的框架布局有关? – vmck