(GUI编程)Day01

GUI编程

怎么学?

  • 这是什么?

  • 它怎么玩?

  • 该如何去在平时运用?

组件

  • 窗口

  • 弹窗

  • 面板

  • 文本框

  • 列表框

  • 按钮

  • 图片

  • 监听事件

  • 鼠标

  • 键盘事件

  • 破解工具

 

1、简介

GUI的核心技术:Swing AWT

  1. 界面不美观

  2. 需要jre环境!

为啥我们要学习?

  1. 可以写出自己心中想要的一些小工具

  2. 工作时候,也可能需要维护到swing界面,概率极小!

  3. 了解MVC架构,了解监听!

 

2、AWT

2.1、AWT介绍

new 类! AWT:抽象的窗口工具。

  1. 包含了很多类和接口!GUI:图形用户界面编程。

  2. 元素:窗口,按钮,文本框

  3. java.awt

 

2.2、组件和容器

1、Frame

 package com.sqdht.lesson01;
 
 import java.awt.*;
 
 //GUI的第一个界面
 public class TestFrame {
     public static void main(String[] args) {
 
         //Frame,JDK,看源码!
         Frame frame = new Frame("我的第一个Java图像界面窗口");
 
         //需要设置可见性 width heigth
         frame.setVisible(true);
 
         //设置窗口大小
         frame.setSize(400,400);
 
         //设置背景颜色   Color
         frame.setBackground(new Color(113, 170, 175));
 
         //弹出的初始位置
         frame.setLocation(200,200);
 
         //设置窗口大小固定
         frame.setResizable(false);
 
 
    }
 }
 

问题:发现窗口关闭不掉,停止java程序!

尝试回顾封装:

 package com.sqdht.lesson01;
 
 import java.awt.*;
 
 public class TestFrame2 {
     public static void main(String[] args) {
         //展示多个窗口 new
         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.gray);
 
    }
 }
 
 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);
    }
 }

2、Panel

解决了关闭事件!

 package com.sqdht.lesson01;
 
 import java.awt.*;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
 
 //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(Color.green);
 
         //panel 设置坐标,相对于frame
         panel.setBounds(50,50,400,400);
         panel.setBackground(new Color(211, 59, 5));
 
         //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);
            }
        });
    }
 }
 

3、布局管理器

  • 流式布局

 package com.sqdht.lesson01;
 
 import java.awt.*;
 
 public class TestFlowLayout {
     public static void main(String[] args) {
         Frame frame = new Frame();
 
         //组件-按钮
         Button button1 = new Button("button1");
         Button button2 = new Button("button2");
         Button button3 = new Button("button3");
 
         //设置为流式布局
         //frame.setLayout(new FlowLayout());
         //frame.setLayout(new FlowLayout(FlowLayout.LEFT));
         frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
 
         frame.setSize(200,200);
 
         frame.setVisible(true);
 
         //把按钮添加上去
         frame.add(button1);
         frame.add(button2);
         frame.add(button3);
 
    }
 }
 

 

  • 东西南北中

 package com.sqdht.lesson01;
 
 import java.awt.*;
 
 public class TestBorderLayout {
     public static void main(String[] args) {
         Frame frame = new Frame("TestBorderLayout");
 
         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);
         
         frame.setVisible(true);
         frame.setBounds(200,200,600,600);
 
    }
 }

 

  • 表格布局 Grid

 package com.sqdht.lesson01;
 
 import java.awt.*;
 
 public class TestGridLayout {
     public static void main(String[] args) {
         Frame frame = new Frame();
 
         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");
 
         frame.setLayout(new GridLayout(3,2));
 
         frame.add(btn1);
         frame.add(btn2);
         frame.add(btn3);
         frame.add(btn4);
         frame.add(btn5);
         frame.add(btn6);
 
         frame.pack();   //Java函数!自动布局
         frame.setVisible(true);
 
    }
 }
 

4、练习

 package com.sqdht.lesson01;
 
 import java.awt.*;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 
 public class TestPractise {
     public static void main(String[] args) {
         Frame frame = new Frame("练习");
         frame.setVisible(true);
         frame.setBounds(100,100,1000,600);
         frame.setLayout(new GridLayout(2,1));
         Panel panel0 = new Panel(new BorderLayout());
         Panel panel1 = new Panel(new BorderLayout());
         panel0.setBounds(0,0,1000,300);
         panel1.setBounds(500,0,1000,300);
         Panel panel00 = new Panel(new GridLayout(2,1));
         panel00.setBounds(0,200,600,300);
         Panel panel10 = new Panel(new GridLayout(2,2));
         panel10.setBounds(0,200,600,300);
         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");
         Button button7 = new Button("Button7");
         Button button8 = new Button("Button8");
         Button button9 = new Button("Button9");
         Button button10 = new Button("Button10");
         panel00.add(button2);
         panel00.add(button3);
         panel10.add(button6);
         panel10.add(button7);
         panel10.add(button8);
         panel10.add(button9);
         panel0.add(button1,BorderLayout.WEST);
         panel0.add(panel00,BorderLayout.CENTER);
         panel0.add(button4,BorderLayout.EAST);
         panel1.add(button5,BorderLayout.WEST);
         panel1.add(panel10,BorderLayout.CENTER);
         panel1.add(button10,BorderLayout.EAST);
         frame.add(panel0);
         frame.add(panel1);
 
         frame.addWindowListener(new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent e) {
                 System.exit(0);
            }
        });
 
 
    }
 }
 

 

posted @ 2021-11-11 14:03  sqdht  阅读(58)  评论(0)    收藏  举报