GUI编程
图形用户界面编程
组件(Component):
窗口、文本框、图片、按钮、监听事件、鼠标
核心技术:Swing AWT(抽象窗口工具包)、界面不美观 (用c++写游戏美观)、需要JRE环境!
为什么学习?
MVC架构基础,了解监听
可以写自己想要的小工具
工作需要维护swing界面,概率小
AWT(抽象窗口工具):
包含类 和接口!
元素:窗口 、 按钮、 文本框
java.awt
组件和容器:
1. Frame:
package com.hao;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
Frame frame = new Frame("haohao");//建一个窗口,名字:
frame.setVisible(true); //显示窗口
frame.setSize(400, 400);
frame.setBackground(new Color(10, 255, 2, 255));
frame.setLocation(200, 200);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-COJosZsR-1618210847132)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210409104941924.png)]
问题: 发现窗口无法关闭,可终止程序运行。
2. 面板Panel
解决关闭事件
package com.hao;
//窗口+面板
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.setVisible(true);
//窗口坐标背景
frame.setBackground(new Color(1,1,1));
frame.setBounds(300,300,500,500);
//面板坐标背景
panel.setBounds(200,200,400,400);
panel.setBackground(new Color(2,2,100));
//窗口添加面板
frame.add(panel);
//监听关闭事件
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
结果图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvsABx11-1618210847138)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210410190110011.png)]
3. 布局管理器
流式布局 FlowLayout frame.setLayout(new FlowLayout(FlowLayout.LEFT));
东西南北中 Border frame.add(对象名,BorderLayout.方向);
表格布局 ----三行两列 Grid java.pack() 自动选择布局,大小不用设置 frame.setLayout(new GridLayout(行,列))
总结:
-
Frame是一个顶级窗口
-
Panel无法单独显示,必须添加到某个容器中
-
布局管理器
1.流式
2.东南西北中
3.表格
-
大小,定位,背景颜色,可见性,监听!
4.事件监听
按下按钮,触发事件 button.addActionListener()
class Listener implements ActionListener{
}
输入框 TextField监听
TextField num = new TextField(); getText()
优化
组合---->面向对象---->内部类