在JFrame上显示一个JPanel中的JComponent

3

我无法在JFrame的JPanel中显示JComponent。

以下方法不起作用。

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

如果我将JComponent添加到JFrame中[例如frame.add(component, BorderLayout.CENTER);],它会显示内容。

有什么想法吗?

2个回答

5

JPanel 的默认布局是 FlowLayout,因此您不需要指定面板的中心。

只需执行以下操作:

panel.add(component);

或者,执行以下操作:

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

谢谢Justin。这就是我所做的。我的问题出在我尝试像这样将面板添加到JFrame中: frame.add(panel, BorderLayout.CENTER);它没有显示组件。 - walters
@wal,那么你的第一条评论就不正确了吗? - jjnguy
@Wal,好的。很高兴我能帮到你。 - jjnguy

2

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

默认情况下,JPanel使用FlowLayout。当您将组件添加到面板时,它将遵守组件的首选大小,该大小为0,因此您无法看到它。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接