Java GUI 编程完全指南:从 Swing 到 JavaFX 图形界面实战开发
一、引言:为什么要学 GUI 编程?图形用户界面(GUI)是用户与程序交互的重要方式。虽然 Web 应用流行,但 Java GUI 依然广泛应用于:
桌面管理系统(ERP、库存管理)
教学/考试软件
小工具、可视化平台
网络通信客户端(如 IM 聊天室)
Java 提供了两大 GUI 技术:
Swing:轻量级,JDK 自带
JavaFX:现代化、支持 CSS、动画与多媒体
二、GUI 编程体系架构图代码语言:javascript代码运行次数:0运行复制lua复制编辑 +-----------------------------+
| Java GUI API |
+-----------------------------+
/ \
+------+ +------+
| Swing| |JavaFX|
+------+ +------+
| |
+----------------+ +-----------------+
| JFrame、JPanel | | Stage、Scene |
| JButton、JLabel| | Button、Label |
+----------------+ +-----------------+三、Swing 入门:第一个窗口程序3.1 创建基本窗口代码语言:javascript代码运行次数:0运行复制java复制编辑import javax.swing.*;
public class HelloSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("第一个 Swing 程序");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("你好,Swing!", SwingConstants.CENTER);
frame.add(label);
frame.setVisible(true);
}
}3.2 图示代码语言:javascript代码运行次数:0运行复制diff复制编辑+---------------------------+
| 第一个 Swing 程序 |
| |
| 你好,Swing! |
| |
+---------------------------+四、Swing 常用组件汇总表组件
说明
JFrame
窗口容器
JPanel
面板容器,用于布局
JButton
按钮
JLabel
文本标签
JTextField
文本输入框
JTextArea
多行文本输入
JCheckBox
多选框
JRadioButton
单选按钮
JComboBox
下拉框
JTable
表格
五、Swing 布局管理器实战5.1 BorderLayout 示例代码语言:javascript代码运行次数:0运行复制java复制编辑frame.setLayout(new BorderLayout());
frame.add(new JButton("北"), BorderLayout.NORTH);
frame.add(new JButton("南"), BorderLayout.SOUTH);
frame.add(new JButton("东"), BorderLayout.EAST);
frame.add(new JButton("西"), BorderLayout.WEST);
frame.add(new JButton("中"), BorderLayout.CENTER);图示代码语言:javascript代码运行次数:0运行复制diff复制编辑+---------------------------+
| 北 |
| 西 中 东 |
| 南 |
+---------------------------+5.2 GridLayout 示例代码语言:javascript代码运行次数:0运行复制java复制编辑frame.setLayout(new GridLayout(2, 3));
for (int i = 1; i <= 6; i++) {
frame.add(new JButton("按钮 " + i));
}六、Swing 事件监听机制详解事件响应是 GUI 编程的核心。
6.1 按钮点击事件代码语言:javascript代码运行次数:0运行复制java复制编辑JButton button = new JButton("点击我");
button.addActionListener(e -> {
JOptionPane.showMessageDialog(null, "按钮被点击!");
});6.2 图示事件流程图代码语言:javascript代码运行次数:0运行复制css复制编辑[按钮点击] → 触发 ActionEvent → 被监听器捕获 → 执行响应方法七、完整 Swing 表单实例:登录界面7.1 代码结构简述 文本框输入用户名密码
点击按钮验证是否正确
弹出提示框
7.2 示例代码代码语言:javascript代码运行次数:0运行复制java复制编辑JTextField userField = new JTextField(15);
JPasswordField passField = new JPasswordField(15);
JButton loginBtn = new JButton("登录");
loginBtn.addActionListener(e -> {
String user = userField.getText();
String pass = new String(passField.getPassword());
if (user.equals("admin") && pass.equals("1234")) {
JOptionPane.showMessageDialog(null, "登录成功!");
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误!");
}
});八、JavaFX 初探:界面现代化选择8.1 JavaFX Hello World代码语言:javascript代码运行次数:0运行复制java复制编辑import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class HelloFX extends Application {
public void start(Stage stage) {
Label label = new Label("你好,JavaFX!");
Scene scene = new Scene(label, 300, 200);
stage.setScene(scene);
stage.setTitle("JavaFX 示例");
stage.show();
}
}九、JavaFX 与 Swing 对比图特性
Swing
JavaFX
API 年代
1998
2012 起,持续更新
风格
老旧风格
更现代(支持 CSS)
动画/多媒体
较弱
原生支持
开发体验
原生 API
可结合 FXML 和 SceneBuilder
十、JavaFX UI 设计图(SceneBuilder 示例)代码语言:javascript代码运行次数:0运行复制markdown复制编辑+--------------------------+
| 登录界面 |
|--------------------------|
| 用户名: [___________] |
| 密码 : [___________] |
| |
| [ 登录 ] [ 取消 ] |
+--------------------------+十一、JavaFX 控件展示表控件
Java 类名
Label
javafx.scene.control.Label
Button
Button
TextField
TextField
PasswordField
PasswordField
CheckBox
CheckBox
RadioButton
RadioButton
TableView
TableView
ComboBox
ComboBox
十二、FXML + SceneBuilder 简化开发FXML 是 JavaFX 的界面描述语言,像 HTML 一样定义布局。
代码语言:javascript代码运行次数:0运行复制xml复制编辑
Java 代码中用 @FXML 注解绑定控件和事件。
代码语言:javascript代码运行次数:0运行复制java复制编辑@FXML private TextField userField;
@FXML
private void handleLogin() {
System.out.println("用户:" + userField.getText());
}十三、Java GUI 项目实战建议项目建议
示例说明
多窗口切换
登录成功后跳转主界面
配置界面风格
使用 UIManager.setLookAndFeel
分离逻辑与界面
使用 MVC 模式或 Controller
提高兼容性
控件大小、布局自适应调整
十四、图解:Swing 与 JavaFX 的开发流程代码语言:javascript代码运行次数:0运行复制mathematica复制编辑Swing 开发流程:
创建 JFrame → 设置布局 → 添加组件 → 添加事件 → 显示窗口
JavaFX 开发流程:
创建 Application → 加载 FXML 或手写控件 → 绑定 Controller → 设置 Scene → 显示 Stage十五、GUI 编程面试题简析问题
简要说明
Swing 是线程安全的吗?
否,GUI 操作需在 EDT 中执行
JavaFX 与 Swing 哪个更现代?
JavaFX,支持 CSS、动画等
如何响应按钮点击事件?
使用 addActionListener 或 FXML
如何实现多窗口跳转?
隐藏当前窗口,创建并显示新窗口
十六、总结与延伸阅读Java GUI 编程依然在多个领域有实际应用价值。通过本文你已经学会:
Swing 基本组件与事件响应机制
JavaFX 更现代的界面构建方式
多窗口、表单、布局等实际案例
场景图 + 表格 + 示例代码结合学习