调整分层窗格摆动的大小



我有一个使用BorderLayout的JPanel,包含一个jTable和一个layeredPane。我需要使用 layeredPane,因为它在 jTextPane 之上包含一个 jComboBox。问题是,当用户调整屏幕大小时,layeredPane 不会调整大小。我该如何解决这个问题?我有这样的东西:

JPanel panel = new JPanel(new Borderlayout());
MyTable table = new MyTable(); 
panel.add(table, BorderLayout.CENTER);
JLayeredPane layeredPane = new JLayeredPane();
//addind things in the layered pane
panel.add(layeredPane, BorderLayout.PAGE_END); 

对分层窗格使用布局管理器是行不通的,因为我需要重叠组件。

在您发布的示例中,JLayeredPane使用BorderLayout在面板中占据了SOUTH(BorderLayout.PAGE_END)的位置。这意味着 CENTER 中的组件将占用提供给面板的所有额外空间。你的桌子在中心。

只需将 JLayeredPane 放在中心,将桌子放在 NORTH 中,即可让窗格占用所有额外的空间。

更多关于边框布局:
http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

您可能还想阅读有关 Swing 布局的更多信息:
http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

  • 关于 JLayeredPane 的常见问题是它的子项将由 setBounds 放置,因为不支持标准布局管理器,不包括空布局

  • 必须在事件上添加组件侦听器 组件调整大小以更改 JPanels 边界

  • 对于放置在 JPanel 中的 JComponents 使用标准布局管理器

  • 不仅仅是一种替代方案,那就是使用基于Java6自定义JXLayer的Java7的正确JLayer

最新更新