我已经使用了jpanels一段时间了,现在想将jpanel放在另一个jpanel的顶部。
我已经考虑使用jlayer,但是我想知道是否有一个解决方案可以设置底部和顶部的层,我不想在可能的情况下设置每个组件层。
示例
JPanel bottomPanel = new JPanel(); # Set as bottom panel
JPanel topPanel = new JPanel(); # Set as top panel
JPanel sidePanel = new JPanel(); # Don't have to set
JPanel anotherSidePanel = new JPanel(); # Don't have to set
如果不可能,最好的解决方案是什么,谢谢。
您可以使用主面板使用BorderLayout
。
然后您可以做类似:
的事情mainPanel.add(leftSide, BorderLayout.LINE_START);
mainPanel.add(rightSide, BorderLayout.LINE_END);
JLayeredPane lp = new JLayeredPane();
mainPanel.add(lp, BorderLayout.CENTER);
听起来您想要的是布局管理器。有一些适合不同需求的不同的需求。这篇文章的底部有一个链接。
我个人最喜欢的是Gridlayout。因此,对于您想做的事,您可以执行此操作:
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 1));
//the first number is the number of rows, the second is the number of columns
JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
panel.add(topPanel);
panel.add(bottomPanel);
那会做你想要的。
如果您想了解更多有关它们的信息,请有一个链接:布局经理上的oracle文档
我知道这很晚,但是如果有人现在有这个问题,我建议使用BoxLayout
。BorderLayout
在其五个位置中的每个位置都只能具有一个单元格,而GridLayout
的单元格都是相同的维度。如果您想堆叠不同尺寸的Jpanels,则可以实现BoxLayout
:
JFrame frame = new JFrame("Intro to BoxLayout");
JPanel container = new JPanel();
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(X1, Y1));
JPanel panel2 = new JPanel();
panel2.setPreferredSize(new Dimension(X2, Y2));
container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
container.add(panel1);
container.add(panel2);
frame.add(container);
frame.pack();
frame.setVisible(true);
其中x1,y1,x2,y2是任意面板维度。