首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 图形用户界面(GUI)开发:从 Swing 入门到实战项目

Java 图形用户界面(GUI)开发:从 Swing 入门到实战项目

原创
作者头像
用户11690571
发布2025-06-10 23:22:10
发布2025-06-10 23:22:10
65800
代码可运行
举报
文章被收录于专栏:每日一编程每日一编程
运行总次数:0
代码可运行

一、前言

Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。

本文将带你入门 Swing GUI 开发,并通过一个实战项目,构建一个简单但完整的 Java 桌面应用。


二、Java GUI 技术体系概览

Java 支持多种 GUI 开发方式,最常见有:

技术

特点

AWT

最早的 GUI,依赖本地组件,跨平台性差

Swing

AWT 的增强版,组件完全由 Java 实现

JavaFX

面向现代 UI,支持动画、CSS 样式

📌 本文主要基于 Swing,因其稳定、适合初学者。


三、Swing 的基本结构

Swing 提供了大量的 GUI 组件:

  • 顶层容器:JFrameJDialog
  • 面板:JPanel
  • 控件:JButtonJTextFieldJLabelJCheckBoxJComboBox
  • 布局管理器:FlowLayoutBorderLayoutGridLayout

🖼️ 组件结构如下图:

代码语言:javascript
代码运行次数:0
运行
复制
markdown复制编辑JFrame
└── JPanel
    ├── JLabel
    ├── JTextField
    └── JButton

四、创建你的第一个 GUI 程序

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

public class HelloSwing {
    public static void main(String[] args) {
        JFrame frame = new JFrame("第一个窗口");
        frame.setSize(400, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("你好,Swing!", SwingConstants.CENTER);
        frame.add(label);

        frame.setVisible(true);
    }
}

运行效果如图:

🖼️


五、添加输入框与按钮

让用户输入内容并点击按钮后显示消息。

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

public class InputDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("输入演示");
        frame.setSize(400, 150);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());

        JLabel label = new JLabel("请输入你的名字:");
        JTextField textField = new JTextField(20);
        JButton button = new JButton("确认");

        frame.add(label);
        frame.add(textField);
        frame.add(button);

        button.addActionListener(e -> {
            String name = textField.getText();
            JOptionPane.showMessageDialog(frame, "你好," + name + "!");
        });

        frame.setVisible(true);
    }
}

🖼️ 图示操作流程:

  1. 输入框中输入 "小明"
  2. 点击按钮后弹出对话框 “你好,小明!”

六、布局管理器详解

Swing 中组件如何排列由布局管理器控制:

常见布局示意:

布局类型

示例用途

说明

FlowLayout

简单排列

默认布局,组件从左到右流动

BorderLayout

典型窗口界面

东西南北中五个区域

GridLayout

表格样式布局

所有单元格大小一致

示例:

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑frame.setLayout(new BorderLayout());
frame.add(new JButton("北"), BorderLayout.NORTH);
frame.add(new JButton("中"), BorderLayout.CENTER);
frame.add(new JButton("东"), BorderLayout.EAST);

七、综合实战:记事本小程序

我们来做一个具有基本功能的记事本 GUI 应用,包括菜单栏、文本区和保存按钮。

7.1 功能需求

  • 多行输入
  • 保存按钮可将内容写入本地文件
  • 清空按钮清空文本框

7.2 完整代码

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

public class NoteApp {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Java 记事本");
        frame.setSize(500, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        JTextArea textArea = new JTextArea();
        JScrollPane scrollPane = new JScrollPane(textArea);
        frame.add(scrollPane, BorderLayout.CENTER);

        JPanel panel = new JPanel();
        JButton saveButton = new JButton("保存");
        JButton clearButton = new JButton("清空");

        panel.add(saveButton);
        panel.add(clearButton);
        frame.add(panel, BorderLayout.SOUTH);

        // 保存逻辑
        saveButton.addActionListener(e -> {
            try (BufferedWriter writer = new BufferedWriter(new FileWriter("note.txt"))) {
                writer.write(textArea.getText());
                JOptionPane.showMessageDialog(frame, "保存成功!");
            } catch (IOException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(frame, "保存失败!");
            }
        });

        // 清空逻辑
        clearButton.addActionListener(e -> textArea.setText(""));

        frame.setVisible(true);
    }
}

🖼️ GUI 界面如下:

  • 中部:大文本框
  • 底部:两个按钮(保存、清空)

八、事件监听机制

Swing 的事件机制基于 “监听器” 模式:

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // 按钮点击响应
    }
});

也可使用 Lambda 表达式简化:

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑button.addActionListener(e -> {
    System.out.println("按钮被点击!");
});

九、增强体验:设置字体、颜色、图标

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑textArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));
textArea.setForeground(Color.BLUE);
textArea.setBackground(new Color(240, 240, 240));

添加图标:

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

十、总结与扩展方向

本文回顾:

  • 了解了 Swing 基本结构
  • 构建了输入交互窗口
  • 实现了记事本 GUI 应用
  • 理解了事件监听与布局管理

后续可扩展:

  • 使用 JavaFX 提升美观度
  • 集成文件打开/另存为功能
  • 增加字体调整、字数统计等插件
  • 构建带登录界面的应用

Java GUI 是桌面软件开发的重要入口,通过 Swing,开发者可快速构建交互界面,部署于跨平台桌面系统中。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、Java GUI 技术体系概览
  • 三、Swing 的基本结构
  • 四、创建你的第一个 GUI 程序
  • 五、添加输入框与按钮
  • 六、布局管理器详解
    • 常见布局示意:
  • 七、综合实战:记事本小程序
    • 7.1 功能需求
    • 7.2 完整代码
  • 八、事件监听机制
  • 九、增强体验:设置字体、颜色、图标
  • 十、总结与扩展方向
    • 本文回顾:
    • 后续可扩展:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档