java中的布局嵌套(GUI编程)

观前提示:博主正在跟着狂神说的java视频自学

其中有一道题是根据下图创建一个窗口 废话少说,下面是我的代码:

package com.lng.lesson1;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Test {
          
   
    public static void main(String[] args) {
          
   
        Frame frame = new Frame();//创建窗口
        //创建面板上下两部分
        Panel p1 = new Panel();
        Panel p2 = new Panel();
        //创建面板中间两部分
        Panel p3 = new Panel();
        Panel p4 = new Panel();
        //创建10个按钮
        Button btn1 = new Button("btn1");
        Button btn2 = new Button("btn2");
        Button btn3 = new Button("btn3");
        Button btn4 = new Button("btn4");
        Button btn5 = new Button("btn5");
        Button btn6 = new Button("btn6");
        Button btn7 = new Button("btn7");
        Button btn8 = new Button("btn8");
        Button btn9 = new Button("btn9");
        Button btn10 = new Button("btn10");

        frame.setBounds(600,250,500,500);//设置窗口出现位置及大小
        //上下两部分为东西南北中布局
        p1.setLayout(new BorderLayout());
        p2.setLayout(new BorderLayout());
        //中间两部分为表格布局
        p3.setLayout(new GridLayout(2,1));//对应上半部分中间的两行一列
        p4.setLayout(new GridLayout(2,2));//对应下半部分中间的两行两列

        p1.add(btn1,BorderLayout.WEST);//添加上半部分的左边按钮,即西区
        p1.add(btn2,BorderLayout.EAST);//添加上半部分的右边按钮,即东区
        p1.add(p3,BorderLayout.CENTER);//在上半部分的中间部分添加一个新面板

        p2.add(btn3,BorderLayout.WEST);//添加下半部分的左边按钮,即西区
        p2.add(btn4,BorderLayout.EAST);//添加下半部分的左边按钮,即东区
        p2.add(p4,BorderLayout.CENTER);//在下半部分的中间部分添加一个新面板
        //在上半部分的中间部分添加两个按钮(表格布局)
        p3.add(btn5);
        p3.add(btn6);
        //在下半部分的中间部分添加四个按钮(表格布局)
        p4.add(btn7);
        p4.add(btn8);
        p4.add(btn9);
        p4.add(btn10);

        frame.setLayout(new GridLayout(2,1));//窗口布局设置为表格布局,分为上下两部分
        //在窗口添加面板组件
        frame.add(p1);
        frame.add(p2);

        frame.setVisible(true);//窗口可视化
        //添加监听使得窗口可以关闭
        frame.addWindowListener(new WindowAdapter() {
          
   
            @Override
            public void windowClosing(WindowEvent e) {
          
   
                System.exit(0);
            }
        });
    }


}

具体的解释都在代码里面了,其中我觉得最重要的是面板的嵌套 即

p1.add(p3,BorderLayout.CENTER);
p2.add(p4,BorderLayout.CENTER);

因为panel本身就是一个组件,即component,所以panel自己添加自己没毛病。

经验分享 程序员 微信小程序 职场和发展