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);

    }
}

java awt设置必填项_java awt设置必填项

问题,窗口无法关闭!

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);
            }
        });
    }
}

java awt设置必填项_背景颜色_02

布局管理器
  • 流式布局
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);
            }
        });
    }
}

java awt设置必填项_java_03

  • 东西南北中
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);
            }
        });
    }
}

java awt设置必填项_可见性_04

  • 表格布局
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);
            }
        });
    }
}

java awt设置必填项_java_05

练习
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);
            }
        });


    }
}

java awt设置必填项_java awt设置必填项_06

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