我们正在开发一个项目,我们遇到了在同一个JFrame上包含两个以上Panel的问题。我们想要的是一个Panel在另一个之上。
社区是否可以帮助举例来实现这一点,或者向我推荐一个与Java Swing需求相关的好教程或指南?
答案 0 :(得分:8)
假设您希望将两个面板添加到单个框架中:
为您的父JFrame设置布局并添加两个面板。类似于以下内容
JFrame frame = new JFrame();
//frame.setLayout(); - Set any layout here, default will be the form layout
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
frame.add(panel1);
frame.add(panel2);
假设您要在另一个
上添加一个面板JFrame frame = new JFrame();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
frame.add(panel1);
panel1.add(panel2);
JFrame上添加的面板数量没有限制。你应该明白,在更高层次看到它们都是容器。
答案 1 :(得分:2)
如果您希望每个框架/面板具有相同的大小,请使用GridLayout,网格为1(列)和2(行)
Frame myFrame;
GridLayout myLayout = new GridLayout(2,1);
myFrame.setLayout(myLayout);
Panel p1;
Panel p2;
myFrame.add(p1);
myFrame.add(p2);
如果面板大小不同,请使用BorderLayout ....将上框设置为“North”,将下框设置为“South”或“Center”
Frame myFrame;
myFrame.setLayout(new BorderLayout() );
Panel p1;
Panel p2;
myFrame.add(p1, BorderLayout.NORTH);
myFrame.add(p2, BorderLayout.CENTER);
答案 2 :(得分:2)
//您还可以使用卡片布局,这样您就可以在主面板上添加多个卡片面板。
CardLayout cl;
JPanel main,one,two,three;
JButton button1,button2;
cl = new CardLayout();
main.setLayout(cl);
main.add(one,"1");
main.add(two,"2");
main.add(three,"3");
cl.show(main,"1");
public void actionPerformed(ActionEvent e){
if(e.getSource() == button1)
cl.show(main,"2");
else if(e.getSource() == button2)
cl.show(main,"3");
}