Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JFrame中包含两个以上的面板?_Java_Swing_Layout Manager - Fatal编程技术网

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

Java 在JFrame中包含两个以上的面板?,java,swing,layout-manager,Java,Swing,Layout Manager,我们在一个项目中遇到了一个问题,在同一个JFrame上包含两个以上的面板。我们想要的是一个面板在另一个上面 社区能否提供一个ho示例来实现这一点,或者让我参考与Java Swing需求相关的好教程或指南?假设您希望在一个框架中添加两个面板: 为父JFrame设置布局并添加两个面板。类似于下面的内容 JFrame frame = new JFrame(); //frame.setLayout(); - Set any layout here, default will be the form la

我们在一个项目中遇到了一个问题,在同一个JFrame上包含两个以上的面板。我们想要的是一个面板在另一个上面


社区能否提供一个ho示例来实现这一点,或者让我参考与Java Swing需求相关的好教程或指南?

假设您希望在一个框架中添加两个面板:

为父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(行)

如果面板大小不同,请使用BorderLayout。。。。将上部框架设置为“北”,下部框架设置为“南”或“中”


//您还可以使用卡片布局,这使您能够在主面板上添加多个卡片面板

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

你在框架中使用了什么布局管理器(FlowLayout、BorderLayout、GridLayout、GroupLayout等)?但这里的问题是默认布局是“FlowLayout”,这不会给他想要的结果——好吧,我有点误读了你文章的第一部分,但这里需要的是非常具体的布局,而不仅仅是“设置布局”
Frame myFrame;  

myFrame.setLayout(new BorderLayout() );  

Panel p1;  
Panel p2;  

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