在Java 1.6中,为什么使用默认的add()将一个Jpanel添加到另一个JPanel不显示添加的面板?
我有一个 JFrame,上面有一个 JPanel。
我想添加另一个 JPanel,它是 JFrame 内 Jpanel 上的预配置组件。
如果我这样做:
subPanel.setLayout(new BorderLayout());
subPanel.add(preconfiguredPanel,BorderLayout.CENTER);
我的面板将显示。
如果我这样做:
subPanel.add(preconfiguredPanel);
我的 JPanel 将不会显示。文档说,当使用 add(Component) 时,它将使用默认的布局 FlowLayout。好吧,但是为什么在使用默认的 FlowLayout 时我的组件不会显示在 JPanel 中???
I have a JFrame with a JPanel on it.
I want to add another JPanel which is a preconfigured component onto the Jpanel inside my JFrame.
If I do this:
subPanel.setLayout(new BorderLayout());
subPanel.add(preconfiguredPanel,BorderLayout.CENTER);
my Panel will show.
If I do this:
subPanel.add(preconfiguredPanel);
my JPanel will not show. The documentation says when using add(Component) it will use the default Layout FlowLayout. Ok fine, but why won't my component display inside that JPanel when using the default FlowLayout???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能是因为您的面板没有首选尺寸。
当您将面板添加到 BorderLayout 时,默认情况下会将其放置在中心,因此面板的大小将自动调整为框架的大小。
将面板添加到 FlowLayout 时,流布局将遵循面板的大小。
如果您需要更多帮助,请发布您的 SSCCE。
Probably because your panel doesn't have a preferred size.
When you add a panel to a BorderLayout the default is to place it in the center, so the panel will automatically be resized to the size of the frame.
When you add the panel to a FlowLayout, the flow layout repsects the size of the panel.
If you need more help then post your SSCCE.