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(400300);//设置大小
            fra.setLocation(300400);//设置初始位置
            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.大小、定位、背景颜色、可见性、监听 

相关