2010-03-27 81 views
4

我们正在研究一个项目,在这个项目中,我们遇到了在同一个JFrame上包含两个以上面板的问题。我们想要的是一个面板位于另一个面板上方。在JFrame中包含两个以上的面板?

社区可以帮助举一个例子来实现这个,或者将我引荐到一个与我们的Java Swing需求相关的好教程或指南?

+0

什么布局管理器(FlowLayout,BorderLayout,GridLayout,GroupLayout等)在你的框架中使用? – 2010-03-27 10:46:18

回答

7

假设你想两个面板添加到一个框架:

设置你的父母的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中添加。你应该明白,从更高的层面上看,它们都是容器。

+0

但这里的问题是,默认布局是“FlowLayout”,并不会给他想要的结果 - 好吧,我误解了你的文章的第一部分,但是这里需要的是需要非常具体的布局,而不仅仅是“设置布局” – Wintermut3 2010-03-27 13:51:19

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的....设定上限框架“北”和下一个“南”或“中心”

Frame myFrame; 

myFrame.setLayout(new BorderLayout()); 

Panel p1; 
Panel p2; 

myFrame.add(p1, BorderLayout.NORTH); 
myFrame.add(p2, BorderLayout.CENTER); 
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"); 
} 
相关问题