jpanel在另一个jpanel之上



我已经使用了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文档

我知道这很晚,但是如果有人现在有这个问题,我建议使用BoxLayoutBorderLayout在其五个位置中的每个位置都只能具有一个单元格,而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是任意面板维度。

相关内容

  • 没有找到相关文章

最新更新