2009-10-05 114 views
1

我有一個帶有JPanel的JFrame。在Java 1.6中,爲什麼使用默認的add()不添加面板來將Jpanel添加到另一個JPanel?

我想添加另一個JPanel,這是一個預先配置的組件到我的JFrame中的Jpanel。

如果我這樣做:

subPanel.setLayout(new BorderLayout()); 
    subPanel.add(preconfiguredPanel,BorderLayout.CENTER); 

我的面板將顯示。

如果我這樣做:

subPanel.add(preconfiguredPanel); 

我的JPanel將不會顯示。文檔說使用add(Component)時,它將使用默認的Layout FlowLayout。好的,但是爲什麼我的組件在使用默認的FlowLayout時不會在該JPanel內部顯示?

+2

你在做frame.pack()和frame.setVisible(true)嗎? – amischiefr 2009-10-05 19:54:53

+0

是。當然外框... – Zak 2009-10-05 20:01:37

+0

也,框架的其餘部分顯示罰款。我向控制面板添加了邊框,當使用默認佈局時,控制面板爲1x1像素(或可能爲0x0)。當我使用邊界佈局時,它是預配置面板的首選大小。 – Zak 2009-10-05 20:03:28

回答

4

可能是因爲您的面板沒有首選尺寸。

將面板添加到BorderLayout時,默認情況下將其放置在中心,因此面板將自動調整大小爲框的大小。

將面板添加到FlowLayout時,流程佈局將重新設置面板的大小。

如果您需要更多幫助,請發佈您的SSCCE。

+0

我正在使用NetBeans來佈局各種組件。我的組件是否具有我將它調整爲使用NetBeans的首選大小?這是使用BorderLayout時顯示的確切大小,或者直接將其添加到JFrame中並執行pack()。你可以更具體的函數的返回值,我應該檢查組件JPanel? – Zak 2009-10-05 20:20:01

+0

如果要將Swing組件添加到使用佈局的Swing面板,那麼面板應具有首選大小。如果您在沒有佈局管理器的情況下使用JPanel,或者可能執行自定義繪畫,那麼它將不具有首選大小。我無法猜出確切的原因,因爲你還沒有發佈SSCCE。 – camickr 2009-10-05 23:18:04