在JFrame中包含两个以上的面板?

时间:2010-03-27 10:25:40

标签: java swing layout-manager

我们正在开发一个项目,我们遇到了在同一个JFrame上包含两个以上Panel的问题。我们想要的是一个Panel在另一个之上。

社区是否可以帮助举例来实现这一点,或者向我推荐一个与Java Swing需求相关的好教程或指南?

3 个答案:

答案 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");
}