我无法在JFrame的JPanel中显示JComponent。
以下方法不起作用。
JComponent component = ...
panel.add(component, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);
如果我将JComponent添加到JFrame中[例如frame.add(component, BorderLayout.CENTER);
],它会显示内容。
有什么想法吗?
我无法在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。因此,当您向框架的内容窗格添加组件时,组件会自动调整大小以填充框架可用的空间,
解决方案是给您的组件指定一个首选大小,然后可以在任何具有任何布局管理器的面板上使用它。