GUI编程,AWT,Swing

  • Post author:
  • Post category:其他




GUI编程

组成:

  • 窗口

  • 弹窗

  • 面板

  • 文本框

  • 列表框

  • 监听事件

  • 鼠标键盘事件

  • 写破解工具



1、简介

GUI的核心技术:swing、AWT

GUI目前几乎被淘汰,其中原因主要是:

  1. 界面太不美观。

  2. 需要下载比较大的jre环境。

GUI学习下来的作用:

  1. 可以写出一些自己想要的小工具。
  2. 工作的时候,可能需要维护swing界面。
  3. 了解MVC架构,了解监听器。



2、AWT



2.1、AWT介绍

  1. awt包含很多类和接口!GUI:图形界面编程!

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

  3. Java.awt



2.2、组件和容器



1.Frame
package GUI;

import java.awt.*;

public class TestFrame {
    public static void main(String[] args) {
        //frame,  通过源码得到frame里的方法,来改变窗口的设置。
        Frame frame = new Frame("java图形界面窗口");
        //设置可见性
        frame.setVisible(true);
        //设置窗口大小  w  h
        frame.setSize(400,400);
        //设置背景颜色  color
        frame.setBackground(new Color(34, 141, 196));
        //弹出的初始位置
        frame.setLocation(100,100);
        //设置大小固定
        frame.setResizable(false );
    }
}

在这里插入图片描述

利用封装显示多个窗口:

public class TestFrame1 {
    public static void main(String[] args) {
        //显示多个窗口  new出来
        MyFrame myFrame1 = new MyFrame(100,100,300,300,Color.black);
        MyFrame myFrame2 = new MyFrame(400,100,300,300,Color.blue);
        MyFrame myFrame3 = new MyFrame(100,400,300,300,Color.white);
        MyFrame myFrame4 = new MyFrame(400,400,300,300,Color.green);
    }
}
class MyFrame extends Frame{
    static int id = 0;//存在多个窗口,需要计数器

    public MyFrame(int x,int y,int w,int h,Color color){
        super("MyFrame+"+(++id));
        setVisible(true);
        setBounds(x,y,w,h);
        setBackground(color);
    }
}

在这里插入图片描述



2.面板 Panel

面板无法单独显示必须添加到某个容器中!

面板实例,通过监听事件实现窗口关闭:

package GUI;

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

public class TestPanel {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //面板是在窗口里面    布局的概念
        Panel panel = new Panel();

        //设置布局
        frame.setLayout(null);

        frame.setBounds(300,300,400,400);
        frame.setBackground(new Color(35, 140, 172));

        panel.setBounds(50,50,300,300);
        panel.setBackground(new Color(215, 22, 22));
        //frame.add(panel)窗口里创建面板
        frame.add(panel);
        frame.setVisible(true);

        //监听事件,监听窗口的关闭事件 实现窗口关闭
        //简化代码 ,用适配器模式
        frame.addWindowListener(new WindowAdapter() {
            //点击关闭窗口的时候要做什么
            @Override
            public void windowClosing(WindowEvent e) {
                //结束程序
                System.exit(0);
            }
        });
    }
}

在这里插入图片描述



3.布局管理器
  • 流式布局 FlowLayout (组件从左到右依次排列,到尾部在另起一行同上排列。) Panel系(Panel、Applet)默认FlowLayout
public class TestFlowLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("FlowLayout");

        //按钮组件
        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");

        //设置流式布局
        frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
        frame.setSize(400,400);

        //添加按钮
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);

        frame.setVisible(true);
    }
}

在这里插入图片描述

  • 方位排列布局 BorderLayout (将容器分为EAST,SOUTH,WEST,NORTH,CENTER五个区域,把组件填到这些区域) Window系(Frame、Dialog)默认BorderLayout
public class TestBorderLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("BorderLayout");

        //按钮组件
        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.setSize(300,300);
        frame.setVisible(true);
    }
}

在这里插入图片描述

  • 表格布局 GridLayout (容器分割成大小相同的网格,我们在添加组件时将默认从左到右从上到下,将组件依次添加到每个网格中,而每个组件的大小也就由其所添加到的网格的大小所决定)
public class TestGridLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("GridLayout");
        //按钮组件
        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.setSize(400,400);
        //添加按钮
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.add(button5);
        frame.add(button6);
        //自动设置布局大小优化 pack()
        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述

  • 单独使用一个布局不太美观,可以利用布局嵌套来实现,界面的美化。



版权声明:本文为qq_44104879原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。