原创 Java GUI 编程完全指南:从 Swing 到 JavaFX 图形界面实战开发

2025-6-8 16:13 45 0 分类: 物联网

一、引言:为什么要学 GUI 编程?

图形用户界面(GUI)是用户与程序交互的重要方式。虽然 Web 应用流行,但 Java GUI 依然广泛应用于:

  • 桌面管理系统(ERP、库存管理)
  • 教学/考试软件
  • 小工具、可视化平台
  • 网络通信客户端(如 IM 聊天室)

Java 提供了两大 GUI 技术:

  1. Swing:轻量级,JDK 自带
  2. JavaFX:现代化、支持 CSS、动画与多媒体

二、GUI 编程体系架构图

lua
复制编辑
+-----------------------------+ | Java GUI API | +-----------------------------+ / \ +------+ +------+ | Swing| |JavaFX| +------+ +------+ | | +----------------+ +-----------------+ | JFrame、JPanel | | Stage、Scene | | JButton、JLabel| | Button、Label | +----------------+ +-----------------+

三、Swing 入门:第一个窗口程序

3.1 创建基本窗口

java
复制编辑
import javax.swing.*; publicclassHelloSwing { publicstaticvoidmain(String[] args) { JFrameframe=newJFrame("第一个 Swing 程序"); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabellabel=newJLabel("你好,Swing!", SwingConstants.CENTER); frame.add(label); frame.setVisible(true); } }

3.2 图示

diff
复制编辑
+---------------------------+ | 第一个 Swing 程序 | | | | 你好,Swing! | | | +---------------------------+

四、Swing 常用组件汇总表

组件说明
JFrame窗口容器
JPanel面板容器,用于布局
JButton按钮
JLabel文本标签
JTextField文本输入框
JTextArea多行文本输入
JCheckBox多选框
JRadioButton单选按钮
JComboBox下拉框
JTable表格

五、Swing 布局管理器实战

5.1 BorderLayout 示例

java
复制编辑
frame.setLayout(newBorderLayout()); frame.add(newJButton("北"), BorderLayout.NORTH); frame.add(newJButton("南"), BorderLayout.SOUTH); frame.add(newJButton("东"), BorderLayout.EAST); frame.add(newJButton("西"), BorderLayout.WEST); frame.add(newJButton("中"), BorderLayout.CENTER);

图示

diff
复制编辑
+---------------------------+ | 北 | | 西 中 东 | | 南 | +---------------------------+

5.2 GridLayout 示例

java
复制编辑
frame.setLayout(newGridLayout(2, 3)); for (inti=1; i <= 6; i++) { frame.add(newJButton("按钮 " + i)); }

六、Swing 事件监听机制详解

事件响应是 GUI 编程的核心。

6.1 按钮点击事件

java
复制编辑
JButtonbutton=newJButton("点击我"); button.addActionListener(e -> { JOptionPane.showMessageDialog(null, "按钮被点击!"); });

6.2 图示事件流程图

css
复制编辑
[按钮点击] → 触发 ActionEvent → 被监听器捕获 → 执行响应方法

七、完整 Swing 表单实例:登录界面

7.1 代码结构简述

  • 文本框输入用户名密码
  • 点击按钮验证是否正确
  • 弹出提示框

7.2 示例代码

java
复制编辑
JTextFielduserField=newJTextField(15); JPasswordFieldpassField=newJPasswordField(15); JButtonloginBtn=newJButton("登录"); loginBtn.addActionListener(e -> { Stringuser= userField.getText(); Stringpass=newString(passField.getPassword()); if (user.equals("admin") && pass.equals("1234")) { JOptionPane.showMessageDialog(null, "登录成功!"); } else { JOptionPane.showMessageDialog(null, "用户名或密码错误!"); } });

八、JavaFX 初探:界面现代化选择

8.1 JavaFX Hello World

java
复制编辑
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.stage.Stage; publicclassHelloFXextendsApplication { publicvoidstart(Stage stage) { Labellabel=newLabel("你好,JavaFX!"); Scenescene=newScene(label, 300, 200); stage.setScene(scene); stage.setTitle("JavaFX 示例"); stage.show(); } }

九、JavaFX 与 Swing 对比图

特性SwingJavaFX
API 年代19982012 起,持续更新
风格老旧风格更现代(支持 CSS)
动画/多媒体较弱原生支持
开发体验原生 API可结合 FXML 和 SceneBuilder

十、JavaFX UI 设计图(SceneBuilder 示例)

markdown
复制编辑
+--------------------------+ | 登录界面 | |--------------------------| | 用户名: [___________] | | 密码 : [___________] | | | | [ 登录 ] [ 取消 ] | +--------------------------+

十一、JavaFX 控件展示表

控件Java 类名
Labeljavafx.scene.control.Label
ButtonButton
TextFieldTextField
PasswordFieldPasswordField
CheckBoxCheckBox
RadioButtonRadioButton
TableViewTableView
ComboBoxComboBox

十二、FXML + SceneBuilder 简化开发

FXML 是 JavaFX 的界面描述语言,像 HTML 一样定义布局。

xml
复制编辑
<GridPanexmlns:fx="http://javafx.com/fxml"> <Labeltext="用户名:"/> <TextFieldfx:id="userField"/> <Buttontext="登录"onAction="#handleLogin"/> </GridPane>

Java 代码中用 @FXML 注解绑定控件和事件。

java
复制编辑
@FXMLprivate TextField userField; @FXMLprivatevoidhandleLogin() { System.out.println("用户:" + userField.getText()); }

十三、Java GUI 项目实战建议

项目建议示例说明
多窗口切换登录成功后跳转主界面
配置界面风格使用 UIManager.setLookAndFeel
分离逻辑与界面使用 MVC 模式或 Controller
提高兼容性控件大小、布局自适应调整

十四、图解:Swing 与 JavaFX 的开发流程

mathematica
复制编辑
Swing 开发流程: 创建 JFrame → 设置布局 → 添加组件 → 添加事件 → 显示窗口 JavaFX 开发流程: 创建 Application → 加载 FXML 或手写控件 → 绑定 Controller → 设置 Scene → 显示 Stage

十五、GUI 编程面试题简析

问题简要说明
Swing 是线程安全的吗?否,GUI 操作需在 EDT 中执行
JavaFX 与 Swing 哪个更现代?JavaFX,支持 CSS、动画等
如何响应按钮点击事件?使用 addActionListener 或 FXML
如何实现多窗口跳转?隐藏当前窗口,创建并显示新窗口

十六、总结与延伸阅读

Java GUI 编程依然在多个领域有实际应用价值。通过本文你已经学会:

  • Swing 基本组件与事件响应机制
  • JavaFX 更现代的界面构建方式
  • 多窗口、表单、布局等实际案例
  • 场景图 + 表格 + 示例代码结合学习
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /2 下一条