在JFrame上的JPanel中显示JComponent

时间:2010-08-25 14:56:11

标签: java swing 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);],它会显示内容。

任何想法

2 个答案:

答案 0 :(得分:5)

JPanel的默认布局为FlowLayout,因此您无需指定面板的中心。

简单地说:

panel.add(component);

或者,执行:

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

答案 1 :(得分:2)

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

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

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

解决方案是为您的组件提供首选大小,然后可以在任何面板上使用任何布局管理器。