调整LayeredPane Swing的大小

时间:2012-08-08 08:17:28

标签: java swing jpanel jlayeredpane

我有一个使用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); 

使用分层窗格的布局管理器将不起作用,因为我需要重叠组件。

2 个答案:

答案 0 :(得分:1)

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

只需将JLayeredPane放在CENTER和NORTH中的表格中,让窗格占用所有额外空间。

有关BorderLayout的更多信息:
http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

您可能还想了解有关Swing布局的更多内容:
http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

答案 1 :(得分:1)

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

  • 必须在事件componentResized上添加ComponentListener以更改JPanels Bounds

  • 放置到JPanel的JComponents使用Standard LayoutManager

  • 不仅仅是基于自定义JXLayer for Java6使用适当的JLayer for Java7