‍☠️ 狂补GUI编程(一)‍☠️

🐒个人主页

🏅JavaSE系列专栏

🏴‍☠️ 狂补GUI编程(一)🏴‍☠️

🪅frame窗口:

public class gui_study01 {
    public static void main(String[] args) {
        //Frame窗口  看源码!!!
       Frame frame= new Frame("我的java第一个图形界面窗口\uD83E\uDE82");
        //需要设置可见性
        frame.setVisible(true);
        //设置长,宽  frame.setSize(500 , 500);
        //设置弹窗初始位置frame.setLocation(300,300);
        frame.setBounds(300, 300, 500, 500);
        //设置背景颜色
        frame.setBackground(Color.PINK);
        //设置弹窗大小固定

        MyFrame a1=new MyFrame(0, 0, 500, 500);
        MyFrame a2=new MyFrame(508, 0, 500, 500);
        MyFrame a3=new MyFrame(1016, 0, 500, 500);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZOOcn8eg-1669046947978)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\1669034112206.png)]

🪅MyFrame自定义面板

public class MyFrame extends Frame {
    static int id=0;
    public MyFrame(int x,int y,int w,int h){
        super("MyFrame\uD83E\uDE85"+(++id));//自动生成标题
        setVisible(true);
        setBounds(x, y, w, h);
        setBackground(Color.PINK);
        setResizable(false);

        //监听事件,监听窗口关闭事件
        //适配器模式:Adapter
        addWindowListener(new WindowAdapter(){//创建一个适配器
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });

    }
}

在这里插入图片描述

🪅panel面板:

🪂解决了关闭事件(适配器)

//Panel 可以理解为一个空间,但是不能单独存在
public class TestPanel  {
    public static void main(String[] args) {
        MyFrame frame=new MyFrame(300, 300, 500, 500);
        //布局的概念
        Panel panel=new Panel();
        //设置布局
        frame.setLayout(null);

        //panel设置坐标 相对于frame
        panel.setBounds(100,100,300,300);
        panel.setBackground(new Color(109, 208, 162));

        //添加面板 frame.add(panel)
        frame.add(panel);

        //监听事件,监听窗口关闭事件
        //适配器模式:Adapter
        frame.addWindowListener(new WindowAdapter(){//创建一个适配器
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
    }
}

🪅Layout布局

🪂流式布局

//流式布局
public class TestFlowLayout {
    public static void main(String[] args) {
        MyFrame frame = new MyFrame(200, 200, 500, 500);
        //组件--按钮
        Button button1 = new Button("\uD83E\uDE821");
        Button button2 = new Button("\uD83E\uDDF82");
        Button button3 = new Button("\uD83C\uDF873");

        //设置为流式布局
        frame.setLayout(new FlowLayout());//默认居中
        //frame.setLayout(new FlowLayout(FlowLayout.LEFT));//左边排布
        //frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//右边排布
      //  frame.setLayout(new FlowLayout(FlowLayout.LEFT));//左边排布
        //把按钮添加上去
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
    }
}

在这里插入图片描述

🪂东西南北东-布局

       //东西南北东布局
public class TestBorderLayout {
    public static void main(String[] args) {
        MyFrame frame = new MyFrame(200, 200, 500, 500);

        Button east = new Button("East");
        Button west = new Button("West");
        Button south = new Button("South");
        Button north = new Button("North");
        Button center = new Button("Center");

        //把按钮放到相应位置
        frame.add(east,BorderLayout.EAST);
        frame.add(west,BorderLayout.WEST);
        frame.add(south,BorderLayout.SOUTH);
        frame.add(north,BorderLayout.NORTH);
        frame.add(center,BorderLayout.CENTER);
    }
}

在这里插入图片描述

🪂表格布局

//表格布局
public class TestGridLayout {
    public static void main(String[] args) {
        MyFrame frame = new MyFrame(200, 200, 500, 500);

        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");
        Button button4 = new Button("button4");
        Button button5 = new Button("button5");
        Button button6 = new Button("button6");
        
        //设置两行三列的表格布局
        frame.setLayout(new GridLayout(2,3));
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.add(button5);
        frame.add(button6);
    }
}

在这里插入图片描述

🏅实操作业:

🎇写出下面图形设计:

在这里插入图片描述

//学习练习实操
public class ExDemo01 {
    public static void main(String[] args) {
        //自定义窗口
        MyFrame frame = new MyFrame(200, 200, 500, 500);
        //存放按钮
        Button button = new Button("1");
        Button button2 = new Button("2");
        Button button3 = new Button("3");
        Button button4 = new Button("4");
        Button button5 = new Button("5");
        Button button6 = new Button("6");
        Button a = new Button("a");
        Button b = new Button("b");
        Button c = new Button("c");
        Button d = new Button("d");
        //创建2行一列表格存放两个面板
        frame.setLayout(new GridLayout(2, 1));
        //声明两个面板
        Panel panel_1 = new Panel();
        Panel panel_2 = new Panel();
        Panel panel_3 = new Panel();
        Panel panel_4 = new Panel();
        //存放面板
        frame.add(panel_1);
        frame.add(panel_2);
        panel_1.setLayout(new GridLayout(1, 3));
        panel_2.setLayout(new GridLayout(1, 3));
        panel_1.add(a);//第一行第一列
        panel_1.add(panel_3); //第一行第二列
        panel_1.add(b);//第一行第三列
        panel_2.add(button);//第2行第一列
        panel_2.add(panel_4);//第2行第2列
        panel_2.add(button2);//第2行第3列
        //分别在两个面板内定义表格准备存放按钮
        panel_3.setLayout(new GridLayout(2, 1));
        panel_4.setLayout(new GridLayout(2, 2));
        panel_3.add(c);//第一行第2,1列
        panel_3.add(d);//第一行第2,2列
        panel_4.add(button3);//第2行第2,1列
        panel_4.add(button4);//第2行第2,2列
        panel_4.add(button5);//第2行第3,3列
        panel_4.add(button6);//第2行第3,2列

    }

}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值