GUI布局的嵌套(布局管理器的总结)
制作此图:
思路分析:
1.先构思,如何去做。
2.第一步,frame窗口
3.4个面板
3.1,把窗口new成一个2行一列的布局
Frame fra=new Frame();//创建窗口
//设置窗口为2行1列布局
fra.setLayout(new Gridlayout(2,1));
3.2左边一个button按钮又边也是一个button,中间是一个面板两行
3.3下边的也是左边一个button按钮又边也是一个button,中间是一个面板两行,东西布局
代码上半部分面板图代码:
public class main { public static void main(String[] args) { Frame fra=new Frame();//创建窗口 //设置窗口为2行1列布局 fra.setLayout(new GridLayout(2,1)); //创建4个面板,设置布局 Panel pa=new Panel(new BorderLayout()); //把pa1的面板并在pa的面板中,并设置pa1为两2行,1列 Panel pa1=new Panel(new GridLayout(2,1)); Panel pa2=new Panel(new BorderLayout()); //设置pa3为两2行,2列 Panel pa3=new Panel(new GridLayout(2,2));//把pa3的面板并在pa2的面板中 // // //为面板添加按钮 // //为pa面板添加一个名为East-1的按钮,并把他的位置放在BorderLayout.EAST(东)的位置 pa.add(new Button("East-1"),BorderLayout.EAST); // //为pa面板添加一个名为west-1的按钮,并把他的位置放在BorderLayout.WEST(西)的位置 pa.add(new Button("west-1"),BorderLayout.WEST);
上面代码图为:
代码为左右两边添加按钮:
public class Main { public static void main(String[] args) { Frame fra=new Frame();//创建窗口 fra.setVisble(true);//显示窗口 fra.setSize(400,300);//设置大小 fra.setLocation(300,400);//设置初始位置 fra.setBackground(color.BLACK);//设置颜色 //设置窗口为2行1列布局 fra.setLayout(new Gridlayout(2,1)); //创建4个面板,设置布局 Panel pa=new Panel(new BorderLayout()); Panel pa1=new Panel(new BorderLayout(2,1));//把pa1的面板并在pa的面板中 Panel pa2=new Panel(new BorderLayout()); Panel pa3=new Panel(new BorderLayout(2,2));//把pa3的面板并在pa2的面板中 //为面板添加按钮,代码图为左右两边添加按钮 //为pa1面板添加一个名为East-1的按钮,并把他的位置放在BorderLayout.EAST(东)的位置 pa1.add(add Button("East-1"),BorderLayout.EAST); //为pa1面板添加一个名为west-1的按钮,并把他的位置放在BorderLayout.WEST(西)的位置 pa1.add(add Button("west-1"),BorderLayout.WEST); } }
代码图为左右两边添加按钮:
代码把pa1面板添加到pa面板中:
public class main { public static void main(String[] args) { Frame fra=new Frame();//创建窗口 //设置窗口为2行1列布局 fra.setLayout(new GridLayout(2,1)); //创建4个面板,设置布局 Panel pa=new Panel(new BorderLayout()); //把pa1的面板并在pa的面板中,并设置pa1为两2行,1列 Panel pa1=new Panel(new GridLayout(2,1)); Panel pa2=new Panel(new BorderLayout()); //设置pa3为两2行,2列 Panel pa3=new Panel(new GridLayout(2,2));//把pa3的面板并在pa2的面板中 // // //为面板添加按钮 // //为pa面板添加一个名为East-1的按钮,并把他的位置放在BorderLayout.EAST(东)的位置 pa.add(new Button("East-1"),BorderLayout.EAST); // //为pa面板添加一个名为west-1的按钮,并把他的位置放在BorderLayout.WEST(西)的位置 pa.add(new Button("west-1"),BorderLayout.WEST); //为pa1面板创建两个按钮并放到pa面板的中间 pa1.add(new Button("pa1-btn-1")); pa1.add(new Button("pa1-btn-2")); //把pa1面板添加到pa面板的中间 pa.add(pa1,BorderLayout.CENTER); System.out.println("上半部分已处理完,开始处理下半部分");
代码样图:
代码:下半部分面板图代码及完整代码:
import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Scanner; public class main { public static void main(String[] args) { Frame fra=new Frame();//创建窗口 //设置窗口为2行1列布局 fra.setLayout(new GridLayout(2,1)); //创建4个面板,设置布局 Panel pa=new Panel(new BorderLayout()); //把pa1的面板并在pa的面板中,并设置pa1为两2行,1列 Panel pa1=new Panel(new GridLayout(2,1)); Panel pa2=new Panel(new BorderLayout()); //设置pa3为两2行,2列 Panel pa3=new Panel(new GridLayout(2,2));//把pa3的面板并在pa2的面板中 // // //为面板添加按钮 // //为pa面板添加一个名为East-1的按钮,并把他的位置放在BorderLayout.EAST(东)的位置 pa.add(new Button("East-1"),BorderLayout.EAST); // //为pa面板添加一个名为west-1的按钮,并把他的位置放在BorderLayout.WEST(西)的位置 pa.add(new Button("west-1"),BorderLayout.WEST); //为pa1面板创建两个按钮并放到pa面板的中间 pa1.add(new Button("pa1-btn-1")); pa1.add(new Button("pa1-btn-2")); //把pa1面板添加到pa面板的中间 pa.add(pa1,BorderLayout.CENTER); System.out.println("上半部分已处理完,开始处理下半部分"); // // //左右两边的按钮 // //为pa2面板添加一个名为East-2的按钮,并把他的位置放在BorderLayout.EAST(东)的位置 pa2.add(new Button("East-2"),BorderLayout.EAST); // //为pa2面板添加一个名为west-2的按钮,并把他的位置放在BorderLayout.WEST(西)的位置 pa2.add(new Button("west-2"),BorderLayout.WEST); // // //中间4个的按钮,使用for创建 for (int i=0;i<4;i++ ){ pa3.add(new Button("for-"+i));//直接生成4个按钮 } pa2.add(pa3,BorderLayout.CENTER);//把pa3面板添加到pa2面板的中间 //把面板添加到窗口中,不需要全部面板添加进去,只需要添加pa和pa2面板就可以了,因为pa1和pa3已经分别添加进pa和pa2面板中了 fra.add(pa); fra.add(pa2); fra.setVisible(true);//显示窗口 fra.setSize(400,300);//设置大小 fra.setLocation(300,400);//设置初始位置 fra.setBackground(Color.BLACK);//设置颜色 //配置窗口关闭的监听事件 fra.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
样图:
布局管理器总结:
1.Frame是一个顶级窗口
2.Panel无法单独显示,必须添加到某个容器中
3.布局管理器
1.流式
2.东西南北中
3.表格
4.大小、定位、背景颜色、可见性、监听