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

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

一、前言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 组件:

顶层容器:JFrame、JDialog

面板:JPanel

控件:JButton、JTextField、JLabel、JCheckBox、JComboBox

布局管理器:FlowLayout、BorderLayout、GridLayout

🖼️ 组件结构如下图:

代码语言:javascript复制markdown复制编辑JFrame

└── JPanel

├── JLabel

├── JTextField

└── JButton四、创建你的第一个 GUI 程序代码语言:javascript复制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复制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);

}

}🖼️ 图示操作流程:

输入框中输入 "小明"

点击按钮后弹出对话框 “你好,小明!”

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

常见布局示意:布局类型

示例用途

说明

FlowLayout

简单排列

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

BorderLayout

典型窗口界面

东西南北中五个区域

GridLayout

表格样式布局

所有单元格大小一致

示例:

代码语言:javascript复制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复制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复制java复制编辑button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// 按钮点击响应

}

});也可使用 Lambda 表达式简化:

代码语言:javascript复制java复制编辑button.addActionListener(e -> {

System.out.println("按钮被点击!");

});九、增强体验:设置字体、颜色、图标代码语言:javascript复制java复制编辑textArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));

textArea.setForeground(Color.BLUE);

textArea.setBackground(new Color(240, 240, 240));添加图标:

代码语言:javascript复制java复制编辑ImageIcon icon = new ImageIcon("logo.png");

frame.setIconImage(icon.getImage());十、总结与扩展方向本文回顾: 了解了 Swing 基本结构

构建了输入交互窗口

实现了记事本 GUI 应用

理解了事件监听与布局管理

后续可扩展: 使用 JavaFX 提升美观度

集成文件打开/另存为功能

增加字体调整、字数统计等插件

构建带登录界面的应用

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

相关内容

洛克王国世界boss有哪些 洛克王国世界boss一览
bt365体育备用网址

洛克王国世界boss有哪些 洛克王国世界boss一览

⌛ 10-13 👁️ 1651
八国联军之役
365bet官网开户网址

八国联军之役

⌛ 11-03 👁️ 4729