在JFrame的JPanel内显示JComponent

问题描述:

我无法在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);],它显示的内容。

任何想法

一个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

默认情况下,一个JComponent没有首选大小。

默认情况下,JPanel使用FlowLayout。当您将组件添加到面板时,它将遵循组件的首选大小,即0,因此您不会看到它。

默认情况下,用作JFrame内容窗格的面板使用BorderLayout。因此,当您将组件添加到框架的内容窗格时,组件会自动调整大小以填充框架可用空间,

解决方案是给您的组件一个首选大小,然后它可以用在任何面板上与任何布局管理器。