首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java GUI 编程实战:使用 Swing 构建现代化桌面应用

Java GUI 编程实战:使用 Swing 构建现代化桌面应用

原创
作者头像
用户11690575
发布2025-06-10 22:33:00
发布2025-06-10 22:33:00
55900
代码可运行
举报
运行总次数:0
代码可运行

一、前言

Java GUI(图形用户界面)编程是开发跨平台桌面应用的重要技术。Swing 是 Java 提供的高级 GUI 工具包,可以构建结构清晰、功能丰富的桌面应用程序。

本篇将带你从 Swing 基础组件讲起,逐步实现一个具备窗口、按钮、输入框、事件响应的桌面程序。


二、认识 Java Swing

Swing 是 Java 提供的 GUI 工具包,位于 javax.swing 包中,常见组件包括:

组件

说明

JFrame

主窗口

JPanel

面板容器

JButton

按钮

JLabel

标签文本

JTextField

单行文本输入框

JTextArea

多行文本输入框

JCheckBox

复选框

JRadioButton

单选框

示例界面结构图:

代码语言:javascript
代码运行次数:0
运行
复制
lua复制编辑+-------------------------------+
|         JFrame 窗口           |
|  +-------------------------+  |
|  |        JPanel 面板       | |
|  |  Label  TextField Button | |
|  +-------------------------+  |
+-------------------------------+

三、第一个 GUI 应用:窗口 + 标签 + 按钮

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑import javax.swing.*;

public class HelloSwing {
    public static void main(String[] args) {
        JFrame frame = new JFrame("我的第一个窗口");
        JLabel label = new JLabel("欢迎使用 Java Swing!");

        frame.add(label);  // 添加标签
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

效果图示意:

🖼️(窗口中居中显示一段文字)


四、添加按钮和事件监听器

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑import javax.swing.*;
import java.awt.event.*;

public class ButtonExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("按钮示例");
        JButton button = new JButton("点击我");
        JLabel label = new JLabel("等待点击...");

        button.addActionListener(e -> label.setText("按钮已点击"));

        JPanel panel = new JPanel();
        panel.add(button);
        panel.add(label);

        frame.add(panel);
        frame.setSize(300, 150);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

🖼️ 图示:按钮 + 标签点击后变更内容


五、布局管理器详解

5.1 FlowLayout(流式布局)

组件从左到右排列,超出换行:

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑frame.setLayout(new FlowLayout());

5.2 BorderLayout(边界布局)

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑frame.setLayout(new BorderLayout());
frame.add(button, BorderLayout.SOUTH);

5.3 GridLayout(网格布局)

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑frame.setLayout(new GridLayout(2, 2)); // 两行两列

🖼️ 图示:按钮在南边、输入框在中部、布局均匀分布


六、综合实战:登录窗口开发

我们来实现一个带有“用户名 + 密码 + 登录按钮”的简易登录界面。

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class LoginForm {
    public static void main(String[] args) {
        JFrame frame = new JFrame("登录窗口");

        JLabel userLabel = new JLabel("用户名:");
        JTextField userText = new JTextField(15);

        JLabel passLabel = new JLabel("密码:");
        JPasswordField passText = new JPasswordField(15);

        JButton loginButton = new JButton("登录");
        JLabel resultLabel = new JLabel("");

        loginButton.addActionListener(e -> {
            String user = userText.getText();
            String pass = new String(passText.getPassword());

            if ("admin".equals(user) && "1234".equals(pass)) {
                resultLabel.setText("登录成功!");
            } else {
                resultLabel.setText("用户名或密码错误");
            }
        });

        JPanel panel = new JPanel(new GridLayout(4, 2));
        panel.add(userLabel);
        panel.add(userText);
        panel.add(passLabel);
        panel.add(passText);
        panel.add(new JLabel()); // 空白
        panel.add(loginButton);
        panel.add(new JLabel());
        panel.add(resultLabel);

        frame.add(panel);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

🖼️ 图示:用户输入框 + 密码框 + 登录按钮 + 登录结果提示


七、自定义图标与样式美化

7.1 设置窗口图标

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑ImageIcon icon = new ImageIcon("icon.png");
frame.setIconImage(icon.getImage());

7.2 更换界面风格

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

八、项目实战建议

  • 使用 MVC 模式组织 GUI 项目
  • 事件响应写在控制层,界面仅负责展示
  • 使用 JTable 管理数据表格
  • 使用 SwingWorker 实现后台线程处理

九、总结

  • Swing 提供强大的桌面应用组件
  • 合理使用布局和事件监听可快速构建交互界面
  • 后续可结合数据库、图表、文件读写等进行功能扩展

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、认识 Java Swing
    • 示例界面结构图:
  • 三、第一个 GUI 应用:窗口 + 标签 + 按钮
    • 效果图示意:
  • 四、添加按钮和事件监听器
  • 五、布局管理器详解
    • 5.1 FlowLayout(流式布局)
    • 5.2 BorderLayout(边界布局)
    • 5.3 GridLayout(网格布局)
  • 六、综合实战:登录窗口开发
  • 七、自定义图标与样式美化
    • 7.1 设置窗口图标
    • 7.2 更换界面风格
  • 八、项目实战建议
  • 九、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档