我有一个使用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);
使用分层窗格的布局管理器将不起作用,因为我需要重叠组件。
答案 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