在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);
答
默认情况下,一个JComponent没有首选大小。
默认情况下,JPanel使用FlowLayout。当您将组件添加到面板时,它将遵循组件的首选大小,即0,因此您不会看到它。
默认情况下,用作JFrame内容窗格的面板使用BorderLayout。因此,当您将组件添加到框架的内容窗格时,组件会自动调整大小以填充框架可用空间,
解决方案是给您的组件一个首选大小,然后它可以用在任何面板上与任何布局管理器。
谢谢贾斯汀。这就是我所做的。我尝试将面板添加到JFrame时出现问题: frame.add(panel,BorderLayout.CENTER);.它不显示组件。 – walters 2010-08-25 15:01:32
是的,贾斯汀。这工作。谢谢。 – walters 2010-08-25 15:03:45
@wal,所以你的第一个评论是无效的呢? – jjnguy 2010-08-25 15:05:37