GUI编程-01

组件

  • 窗口

  • 弹窗

  • 面板

  • 文本框

  • 列表框

  • 按钮

  • 图片

  • 监听事件

  • 鼠标

  • 键盘事件

  • 破解工具

Java提供了丰富的图形用户界面(Graphics User Interface,GUI)的类库,基于这些类库可以编写窗口程序。

Java关于图形界面的类库主要放在Swing和AWT包下。

AWT

AWT组件也被称为重组件,因为针对不同的运行平台,AWT组件会调用特定平台组件。

AWT是一个抽象窗口类。

1.包含了很多类和接口

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

3.java.awt包

组件和容器

复制代码
package YMP.GUI;
​
import java.awt.*;
​
public class TestFrame {
    public static void main(String[] args) {
        Frame frame=new Frame("第一个Java图形界面窗口");
​
        //设置可见性
        frame.setVisible(true);
        //设置窗口大小
        frame.setSize(400,400);
        //设置背景颜色
        frame.setBackground(Color.BLACK);
        //弹出的初始位置
        frame.setLocation(200,200);
        //设置大小固定,不可拉伸
        frame.setResizable(false);
    }
}
​

多个窗口

复制代码
package YMP.GUI;
​
import java.awt.*;
​
class MyFrame extends Frame {
​
​
    public MyFrame(int x,int y,int w,int h,Color color){
        setVisible(true);
        setBounds(x,y,w,h);
        setBackground(color);
    }
}
复制代码
package YMP.GUI;
​
import java.awt.*;
​
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);
    }
}
​

面板Panel

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

复制代码
package YMP.GUI;
​
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
​
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(40,161,35));
        //设置Panel相对与frame的坐标
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(193,15,60));
​
        frame.add(panel);
        frame.setVisible(true);
​
        //监听事件,监听窗口关闭事件
        frame.addWindowListener(new WindowListener() {
​
​
            @Override
            public void windowOpened(WindowEvent e) {
​
            }
​
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
​
            @Override
            public void windowClosed(WindowEvent e) {
​
            }
​
            @Override
            public void windowIconified(WindowEvent e) {
​
            }
​
            @Override
            public void windowDeiconified(WindowEvent e) {
​
            }
​
            @Override
            public void windowActivated(WindowEvent e) {
​
            }
​
            @Override
            public void windowDeactivated(WindowEvent e) {
​
            }
​
​
        });
    }
}
​
相关推荐
玲小珑几秒前
LangChain.js 完全开发手册(一)AI 应用开发入门
前端·langchain·ai编程
excel1 分钟前
前端必修:从表单基础到富文本编辑,一文吃透 HTML 表单编程与交互
前端
袁煦丞3 分钟前
JuiceSSH你的口袋里的Linux操控台:cpolar内网穿透实验室第530个成功挑战
前端·程序员·远程工作
CoovallyAIHub5 分钟前
YOLOv8-SMOT:基于切片辅助训练与自适应运动关联的无人机视角小目标实时追踪框架
深度学习·算法·计算机视觉
NightDW5 分钟前
连续周更任务模块的设计与实现
java·后端·mysql
华仔啊6 分钟前
什么情况下用线程池,怎么用?看完就会
java·后端
鹏多多7 分钟前
深入解析vue的transition过渡动画使用和优化
前端·javascript·vue.js
灵魂猎手10 分钟前
8. Mybatis插件体系
java·后端·源码
SimonKing10 分钟前
布隆过滤器:用微小的空间代价换取高效的“可能存在”判定
java·后端·程序员
阿冲Runner11 分钟前
Lombok的@Builder与Mybatis-Plus配合使用踩坑
java·后端·mybatis