我创建了一个扩展 JComponent
的类。该类的对象被添加到 JPanel
。 JPanel
有一个默认的流布局管理器。当我将 JPanel
添加到 JFrame
时,除了一个空的 JFrame
之外什么都看不到。是的,框架是可见的并且调整到最大屏幕尺寸。
我尝试了几种修改来改变这个问题并推导出:
- 组件大小 - 将其设置为无效并且仍然是一个空的
JFrame
- 中间面板 - 将组件添加到中间面板并且仍然是一个空的
JFrame
最后,我决定更改要添加组件的面板的布局管理器,并将面板布局管理器更改为边框布局。然后我将组件添加到中心,现在它出现了。
我的后续问题是:
- 在制作自定义
JComponent
时,我的注意事项是什么? - 为什么我必须更改自定义
JComponent
面板的布局管理器?
我天真地问“如果我可以向面板添加一个 JButton
,并且使用它显示的默认流布局管理器,为什么不使用自定义 JComponent
?
我的自定义 JComponent
是一个内部类:
public class OuterClass
{
private class Panel extends JPanel
{
public Panel()
{
add(new Custom());
}
}
private class Custom extends JComponent
{
public Custom()
{
// Initialization of members but not size of component
}
}
}
最佳答案
A JPanel has a default flow layout manager.
是的,FlowLayout 尊重每个组件的首选大小。您的组件没有首选大小,因此默认为 (0, 0)。
覆盖 getPreferredSize()
方法以返回适当的维度。
关于java - 为什么组件没有出现在我的 JComponent 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001454/