我无法在JFrame上的JPanel中显示JComponent。
以下不起作用。
JComponent component = ...
panel.add(component, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);
但是如果我将JComponent添加到JFrame [如frame.add(component, BorderLayout.CENTER);
],它会显示内容。
任何想法
答案 0 :(得分:5)
JPanel
的默认布局为FlowLayout
,因此您无需指定面板的中心。
简单地说:
panel.add(component);
或者,执行:
panel.setLayout(new BorderLayout());
panel.add(component, BorderLayout.CENTER);
答案 1 :(得分:2)
默认情况下,JComponent没有首选大小。
默认情况下,JPanel使用FlowLayout。向面板添加组件时,它将遵循组件的首选大小,即0,因此您看不到它。
默认情况下,用作JFrame内容窗格的面板使用BorderLayout。因此,当您将组件添加到框架的内容窗格时,组件会自动调整大小以填充框架可用的空间,
解决方案是为您的组件提供首选大小,然后可以在任何面板上使用任何布局管理器。