一、前言:什么是GUI编程
 
GUI(Graphical User Interface,图形用户界面),是相对于黑窗口 CLI(命令行界面) 的可视化交互界面。
 
我们日常打开的窗口、按钮、输入框、弹窗、菜单,全部属于GUI程序。
 
Java GUI 三大技术体系
 
1. AWT:Java最早的图形库,重量级组件,依赖本地系统界面,跨平台差、组件少、界面简陋,目前基本淘汰。
2. Swing:基于AWT封装的轻量级组件,JDK原生自带、无需额外导入依赖、跨平台一致、学习成本低,高校课程、课程设计、入门首选。
3. JavaFX:现代GUI框架,界面美观、支持CSS样式、动画、响应式布局,适合商业桌面项目,高版本JDK支持更佳。
 
本文聚焦教学最常用、考试必考、课程设计必用的 Swing,从零带你掌握Java GUI开发全流程。
 
GUI 编程核心思想
 
GUI程序是 事件驱动模型:
程序启动 → 加载窗口与组件 → 监听用户操作(点击、输入、鼠标、键盘) → 触发对应事件方法执行逻辑。
 
二、Swing 核心整体架构
 
Swing所有组件遵循 容器 + 组件 + 布局 + 事件 四层结构:
 
1. 容器:承载所有界面内容(窗口、面板)
2. 组件:按钮、标签、输入框、单选框等交互控件
3. 布局管理器:控制组件自动排列、适配窗口大小
4. 事件监听:绑定用户操作,实现交互逻辑
 
核心继承关系
 
-  JFrame :顶层主窗口(程序主界面)
-  JPanel :面板(中间容器,用来嵌套组件)
- 所有可视化组件: JButton / JLabel / JTextField  全部继承  JComponent 
 
三、第一个Swing程序:创建主窗口
 
3.1 窗口必备5行代码(模板)
 
所有Swing项目通用初始化逻辑:
 
1. 创建窗口对象
2. 设置窗口标题、大小、位置
3. 设置关闭方式
4. 关闭默认布局(可选)
5. 设置窗口可见
 
 
 
3.2 关键方法说明
 
-  setSize(w,h) :固定窗口大小
-  setLocationRelativeTo(null) :屏幕居中(开发必写)
-  setDefaultCloseOperation :-  EXIT_ON_CLOSE :关闭窗口退出程序
-  HIDE_ON_CLOSE :关闭窗口仅隐藏,程序不退出
-  setVisible(true) :必须最后执行,否则组件可能不渲染
 
四、常用核心组件(考试/项目全覆盖)
 
4.1 文本与显示组件
 
JLabel 标签(展示文字/图片,不可编辑)
 
 
 
4.2 交互输入组件
 
JTextField 单行输入框
 
 
 
JPasswordField 密码框
 
 
 
4.3 按钮组件
 
JButton 普通按钮
 
 
 
4.4 选择类组件
 
-  JRadioButton :单选框(需绑定 ButtonGroup 实现互斥)
-  JCheckBox :复选框
-  JComboBox :下拉选择框
 
完整静态界面演示
 
 
 
五、布局管理器(GUI核心难点)
 
如果不关闭布局,窗口会自动排布组件,常用4种布局:
 
5.1 绝对布局 null(新手最常用)
 
手动设置  setBounds(x,y,w,h) ,自由摆放组件,适合小型课程设计。
 
 
 
5.2 BorderLayout 边界布局(默认布局)
 
将窗口分为 东、南、西、北、中 五个区域
 
 
 
5.3 FlowLayout 流式布局
 
组件从左到右自动排列,满行自动换行,适合按钮组
 
 
 
5.4 GridLayout 网格布局
 
规整行列表格布局,适合登录、表单界面
 
 
 
六、事件监听机制(实现界面交互)
 
GUI 所有交互全部依赖 事件监听器,最常用三大事件:
 
6.1 按钮点击事件 ActionListener(最常用)
 
实现点击按钮触发业务逻辑,以登录弹窗提示为例:
 
 
 
Lambda简化写法(推荐)
 
 
 
6.2 常用事件汇总
 
事件接口 触发场景 
ActionListener 按钮点击、回车、菜单点击 
MouseListener 鼠标按下、松开、移入移出 
KeyListener 键盘按键监听 
WindowListener 窗口打开、关闭、最小化 
 
6.3 弹窗工具 JOptionPane(课程设计高频)
 
 
 
七、高级容器与组件
 
7.1 JPanel 面板(分层布局核心)
 
JFrame 是顶层窗口,不适合直接堆组件,开发规范:
 
所有组件先放入 JPanel,再将面板放入窗口
 
优势:分层清晰、方便布局嵌套、界面美观
 
 
 
7.2 菜单栏 JMenuBar
 
完整窗口标配顶部菜单栏:
 
 
 
八、综合实战:完整登录界面(可直接交作业)
 
包含:账号密码输入、登录按钮、空值校验、登录成功/失败弹窗
 
 
 
九、Swing开发规范与避坑指南
 
1. setVisible(true) 必须放在代码最后,否则组件渲染异常
2. 尽量使用 JPanel分层,不要直接往JFrame加组件
3. 绝对布局适合小型作业,复杂界面优先流式/网格布局
4. 密码框取值必须用  getPassword()  转字符串,不要直接强转
5. 所有弹窗必须指定父窗口,防止弹窗被遮挡
6. 事件内尽量精简逻辑,耗时操作不要阻塞UI线程
 
十、Swing与JavaFX 如何选择
 
1. 课程作业、考试、初学:首选 Swing(简单、无依赖、代码量少)
2. 商业桌面软件、高颜值界面、动画效果:首选 JavaFX
3. Swing 足够应付 大学Java课程设计、期末大作业 99%需求
 
十一、总结
 
Java GUI 核心学习路线:
窗口创建 → 基础组件使用 → 布局管理 → 事件监听 → 弹窗交互 → 综合项目
 
GUI编程打破了纯黑窗口的枯燥编程模式,让Java程序具备可视化、可交互能力,是Java课程设计、桌面工具开发、小型管理系统的必备技能。
 
掌握本文内容,足以独立完成:登录系统、学生信息管理系统、计算器、图书管理GUI版等课程大作业。

更多推荐