3

我无法在 JFrame 上的 JPanel 内显示 JComponent。

以下不起作用。

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

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

有任何想法吗

4

2 回答 2

5

AJPanel的默认布局是 a FlowLayout,因此您不必指定面板的中心。

只需这样做:

panel.add(component);

或者,执行以下操作:

panel.setLayout(new BorderLayout());
panel.add(component, BorderLayout.CENTER);
于 2010-08-25T14:57:41.527 回答
2

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

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

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

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

于 2010-08-25T17:46:32.523 回答