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) {
​
            }
​
​
        });
    }
}
​
相关推荐
皮皮林5511 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河1 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
地平线开发者2 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮2 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
Kagol2 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
地平线开发者3 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考3 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
GIS之路4 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide4 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端