我試圖在一個單一的框架中設計一個有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