2010-08-25 68 views
3

我無法在JFrame的JPanel內顯示JComponent。在JFrame的JPanel內顯示JComponent

以下不起作用。

JComponent component = ... 
panel.add(component, BorderLayout.CENTER); 
frame.add(panel, BorderLayout.CENTER); 

但是,如果我添加的JComponent到JFrame [喜歡frame.add(component, BorderLayout.CENTER);],它顯示的內容。

任何想法

回答

5

一個JPanel的默認佈局是FlowLayout,所以你不必指定面板的中心。

簡單地做:

panel.add(component); 

或者,這樣做:

panel.setLayout(new BorderLayout()); 
panel.add(component, BorderLayout.CENTER); 
+0

謝謝賈斯汀。這就是我所做的。我嘗試將面板添加到JFrame時出現問題: frame.add(panel,BorderLayout.CENTER);.它不顯示組件。 – walters 2010-08-25 15:01:32

+0

是的,賈斯汀。這工作。謝謝。 – walters 2010-08-25 15:03:45

+0

@wal,所以你的第一個評論是無效的呢? – jjnguy 2010-08-25 15:05:37

2

默認情況下,一個JComponent沒有首選大小。

默認情況下,JPanel使用FlowLayout。當您將組件添加到面板時,它將遵循組件的首選大小,即0,因此您不會看到它。

默認情況下,用作JFrame內容窗格的面板使用BorderLayout。因此,當您將組件添加到框架的內容窗格時,組件會自動調整大小以填充框架可用空間,

解決方案是給您的組件一個首選大小,然後它可以用在任何面板上與任何佈局管理器。