GUI编程核心技术之AWT介绍

GUI编程学习第一天

组件

  • 窗口
  • 弹窗
  • 面板
  • 文本框
  • 列表框
  • 按钮
  • 图片
  • 监听事件
  • 鼠标
  • 键盘事件
  • 外挂
  • 破解工具

简介

GUI核心技术:Swing,AWT(不流行)

  1. 界面不美观。
  2. 需要jre环境。

学习GUI得主要目的是了解MVC架构,了解监听。

AWT

AWT介绍

  1. 是一个new类,包含了很多类和接口,用于GUI编程,图形用户界面编程。
  2. 元素:窗口、按钮、文本框、
  3. java.awt
    在这里插入图片描述

组件和容器

Frame

public class TestFrame {
    
    
    public static void main(String[] args) {
    
    
        Frame frame = new Frame("我的第一个java图形界面");

        //设置可见性
        frame.setVisible(true);

        //设置窗口大小
        frame.setSize(500, 500);

        //设置背景颜色
        frame.setBackground(new Color(206, 33, 47));

        //设置窗口弹出的初始位置
        frame.setLocation(200, 200);

        //设定窗口大小固定
        frame.setResizable(false);

    }
}

在这里插入图片描述

问题,窗口无法关闭!

pannel

可以看成是一个空间,但是不能单独存在

加入窗口监听,可以解决窗口无法关闭的问题

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

public class TestPannel {
    
    
    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(Color.blue);

        //panel是设置坐标,相对于Frame
        panel.setBounds(40, 40, 300, 300);
        //设置背景颜色
        panel.setBackground(Color.BLACK);

        //将panel添加到frame中
        frame.add(panel);

        //设置可见性
        frame.setVisible(true);

        //监听事件,监听窗口关闭时间,System.exit(0)
        //适配器模式
        frame.addWindowListener(new WindowAdapter() {
    
    
            @Override
            public void windowClosing(WindowEvent e) {
    
    
                //结束程序
                System.exit(0);
            }
        });
    }
}

在这里插入图片描述

布局管理器

  • 流式布局

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    
    public class TestFlowLayout {
          
          
        public static void main(String[] args) {
          
          
            Frame frame = new Frame("java窗口");
    
            //设置窗口布局为流式布局
            frame.setLayout(new FlowLayout());
            
            //设置窗口背景颜色
            frame.setBackground(Color.blue);
    
            //设置窗口大小和位置
            frame.setBounds(300, 300, 500, 500);
    
            //new多个button
            Button button1 = new Button("button1");
            Button button2 = new Button("button2");
            Button button3 = new Button("button3");
    
            //将button添加到窗口中去
            frame.add(button1);
            frame.add(button2);
            frame.add(button3);
    
            //设置可见性
            frame.setVisible(true);
    
            //窗口监听,是的窗口可以退出
            frame.addWindowListener(new WindowAdapter() {
          
          
                @Override
                public void windowClosing(WindowEvent e) {
          
          
                    System.exit(0);
                }
            });
        }
    }
    

在这里插入图片描述

  • 东西南北中

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    
    public class TestBorderLayout {
          
          
        public static void main(String[] args) {
          
          
            Frame frame = new Frame("java窗口");
            
            //设定为东西南北中布局
            frame.setLayout(new BorderLayout(10, 10));
    
            //设置窗口大小和位置
            frame.setBounds(200, 200, 500, 500);
    
            //设置背景颜色
            frame.setBackground(Color.blue);
    
            //new button
            Button button1 = new Button("east");
            Button button2 = new Button("west");
            Button button3 = new Button("south");
            Button button4 = new Button("north");
            Button button5 = new Button("center");
    
            //添加button到窗口中
            frame.add(button1, BorderLayout.EAST);
            frame.add(button2, BorderLayout.WEST);
            frame.add(button3, BorderLayout.SOUTH);
            frame.add(button4, BorderLayout.NORTH);
            frame.add(button5, BorderLayout.CENTER);
    
            //设定可见性
            frame.setVisible(true);
    
            //监听窗口,使得窗口可以关闭
            frame.addWindowListener(new WindowAdapter() {
          
          
                @Override
                public void windowClosing(WindowEvent e) {
          
          
                    System.exit(0);
                }
            });
        }
    }
    

在这里插入图片描述

  • 表格布局

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class TestGridLayout {
          
          
        public static void main(String[] args) {
          
          
            Frame frame = new Frame("Grid");
    
            //设定窗口布局为grid布局
            frame.setLayout(new GridLayout(2, 2, 10, 10));
    
            //设置窗口大小和位置
            frame.setBounds(200, 200, 500, 500);
    
            //设置窗口背景颜色
            frame.setBackground(Color.blue);
    
            //new button
            Button button1 = new Button("button1");
            Button button2 = new Button("button2");
            Button button3 = new Button("button3");
            Button button4 = new Button("button4");
    
            //将button添加到frame窗口中
            frame.add(button1);
            frame.add(button2);
            frame.add(button3);
            frame.add(button4);
            
            //自动对齐
            frame.pack();
            //设置可见性
            frame.setVisible(true);
    
            //监听窗口,使得其可以被关闭
            frame.addWindowListener(new WindowAdapter() {
          
          
                @Override
                public void windowClosing(WindowEvent e) {
          
          
                    System.exit(0);
                }
            });
        }
    }
    
    

    在这里插入图片描述

练习

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

public class HomeWork {
    
    
    public static void main(String[] args) {
    
    
        Frame frame = new Frame("homework");

        //设置窗口布局
        frame.setLayout(new BorderLayout());

        //设置窗口大小和位置
        frame.setBounds(200, 200, 500, 500);

        //new panel
        Panel panel1 = new Panel(new GridLayout(2, 1));
        Panel panel2 = new Panel(new GridLayout(4, 1));
        Panel panel3 = new Panel(new GridLayout(2, 1));

        //new button
        Button button1 = new Button("pa1-1");
        Button button2 = new Button("pa1-2");
        Button button3 = new Button("pa2-1");
        Button button4 = new Button("pa2-2");
        Button button5 = new Button("pa2-3");
        Button button6 = new Button("pa2-4");
        Button button7 = new Button("pa3-1");
        Button button8 = new Button("pa3-2");


        //panel1中添加button
        panel1.add(button1);
        panel1.add(button2);

        //panel2中添加button
        panel2.add(button3);
        panel2.add(button4);
        panel2.add(button5);
        panel2.add(button6);

        //panel3中添加button
        panel3.add(button7);
        panel3.add(button8);

        //窗口中添加panel
        frame.add(panel1, BorderLayout.WEST);
        frame.add(panel2, BorderLayout.CENTER);
        frame.add(panel3, BorderLayout.EAST);

        //设置可见性
        frame.setVisible(true);

        //设置监听窗口,使得窗口可以关闭
        frame.addWindowListener(new WindowAdapter() {
    
    
            @Override
            public void windowClosing(WindowEvent e) {
    
    
                System.exit(0);
            }
        });


    }
}

在这里插入图片描述

总结

  1. Frame是一个顶级窗口
  2. Pannel无法单独显示,必须添加到某一个容器中
  3. 窗口背景颜色,大小,位置,可见性,监听
  4. 布局管理器
    • 流式
    • 东西南北
    • 表格

参考

学习链接:https://www.bilibili.com/video/BV1DJ411B75F?p=7

猜你喜欢

转载自blog.csdn.net/wqs12345612/article/details/111561487