• GUI编程


    一、GUI编程简介

    • GUI编程(Graphical User Interface),即用户图形界面编程。
    • GUI淘汰原因:界面不够美观,需要jre环境。
    • 学习GUI的好处:1. 为后期学习MVC架构打好基础;2. 了解监听;3. 工作时可能需要维护到Swing界面(概率极小)。
    • GUI的基本组件:窗口、弹窗、面板、文本框、列表框、按钮、图片、交互组件、监听事件、鼠标事件、键盘事件。
    • GUI的核心:AWT和Swing。

    二、AWT

    1. Awt介绍

    AWT是用于创建图形用户界面的一个工具包,它提供了一系列用于实现图形界面的组件,如窗口、按钮、文本框、对话框等。在JDK中针对每个组件都提供了对应的java类,这些类都位于java.awt包中。

    2. 组件和容器

    Component类通常被称为组件,根据Component的不同作用,可将其分为基本组件类和容器类。基本组件类是诸如按钮、文本框之类的图形界面元素,而容器类则是通过Component的子类Container类表示容器,它是一种特殊的组件,可以用来容纳其他组件。
    在这里插入图片描述

    2.1 Frame


    第一个Frame窗口

    //GUI的第一个界面
    public class TestFrame {
        public static void main(String[] args) {
            
            //Frame对象
            Frame frame = new Frame("我的第一个Java图形界面窗口");
    
            //需要设置可见性
            frame.setVisible(true);
    
            //设置窗口大小
            frame.setSize(400, 400);
    
            //设置背景颜色  Color类
    //        frame.setBackground(Color.black); //方式一
            frame.setBackground(new Color(0, 64, 255)); //方式二
    
            //弹出的初始位置
            frame.setLocation(200, 200);
    
            //设置大小固定
            frame.setResizable(false);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述 问题:发现窗口关闭不掉,只能停止Java程序。

    多个弹窗(回顾封装)

    public class TestFrame2 {
        public static void main(String[] args) {
            //显示多个窗口
            MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.blue);
            MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.yellow);
            MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.red);
            MyFrame myFrame4 = new MyFrame(300, 300, 200, 200, Color.magenta);
        }
    }
    
    class MyFrame extends Frame {
    
        static int id = 0; //可能存在多个窗口,我们需要一个计数器
    
        public MyFrame(int x, int y, int w, int h, Color color) {
            super("MyFrame" + (++id));
    
            setBackground(color);
            setBounds(x, y, w, h);
            setVisible(true);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    2.2 Panel(面板)

    解决了关闭事件。

    //Panel 可以看作是一个空间,但是不能单独存在
    public class TestPanel {
        public static void main(String[] args) {
            Frame frame = new Frame();
            //布局的概念
            Panel panel = new Panel();
    
            //设置布局
            frame.setLayout(null);
    
            //坐标
            frame.setBounds(300, 300, 500, 500);
            frame.setBackground(new Color(16, 217, 47));
    
            //Panel设置坐标,相对于frame
            panel.setBounds(50, 50, 400, 400);
            panel.setBackground(new Color(226, 11, 11));
    
            //frame.add(panel)
            frame.add(panel);
    
            frame.setVisible(true);
    
            //监听事件,监听窗口关闭事件  system.exit(0)
            //适配器模式:
            frame.addWindowListener(new WindowAdapter() {
                //窗口点击关闭的时候需要做的事情
                @Override
                public void windowClosing(WindowEvent e) {
                    //结束程序
                    System.exit(0);
                }
            });
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    在这里插入图片描述

  • 相关阅读:
    【算法】Java-使用数组模拟单向链表,双向链表
    Mysql binlog的三种模式statement,row,mixed详解,以及无主键造成复制延时的测试
    [附源码]计算机毕业设计JAVA音乐交流平台
    猿创征文|Vue源码分析(响应式)
    CCF CSP认证 历年题目自练Day26
    【网络安全的神秘世界】文件上传、JBOSS、Struct漏洞复现
    田忌赛马(贪心算法)
    【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
    “用爱发电”难以为继?开源还需要真金白银投入
    类初始化的顺序
  • 原文地址:https://blog.csdn.net/m0_61467488/article/details/126335985