亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java Swing 教程:构建健壮 GUI 应用程序

什么是 Java Swing?

Java Swing 是精致、平台无关的 GUI 工具包,扩展自抽象窗口工具包(AWT)。提供丰富组件——按钮、表格、树等——让开发者无需重新发明基础组件即可打造精美桌面应用。

作为 Java 基础类(JFC)一部分,Swing 在 AWT 核心功能上构建,提供轻量级、可定制组件。结果是支持高级 UI 特性的框架,如外观切换、自定义绘制、数据绑定。

本教程你将掌握:

Java Swing 类层级图

Java Swing 教程:构建健壮 GUI 应用程序

所有 Swing 组件继承自 JComponent 并可添加到容器类。

什么是容器类?

容器类是 Swing UI 骨干——它们容纳并组织其他组件。Swing 应用至少需要一个容器。三种主要容器类型:

  1. JPanel —— 轻量级非窗口容器,用于组合组件。
  2. JFrame —— 顶级窗口,含标题栏、边框、系统菜单。
  3. JDialog —— 模态或非模态弹出窗口,用于用户提示。

什么是 Java GUI?

Java 图形用户界面 (GUI) 为用户提供直观视觉层与应用交互。通过组装按钮、标签、文本框等控件,开发者创建引人入胜的体验,抽象底层逻辑。

如何在 Java 中构建 GUI(分步)

下面实战演示如何构建基础窗口并逐步添加组件。

步骤 1 – 创建新 Java 文件

复制以下代码到编辑器:

import javax.swing.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("My First GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
JButton button = new JButton("Press");
frame.getContentPane().add(button);
frame.setVisible(true);
}
}

步骤 2 – 编译运行

保存文件,javac GuiDemo.java 编译,java GuiDemo 执行。应出现含单按钮的 300×300 窗口。

步骤 3 – 添加另一按钮

修改代码加入第二按钮:

import javax.swing.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("My First GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);
frame.setVisible(true);
}
}

步骤 4 – 观察布局问题

运行后显示两按钮重叠,因 JFrame 默认布局管理器为 BorderLayout,将组件放入五个区域。未指定区域时,后续组件替换前者。

Java 布局管理器

布局管理器控制容器内组件排列。选对管理器对响应式、可维护 GUI 至关重要。最常用管理器:

BorderLayout

BorderLayout 将容器分五区:NORTH、SOUTH、EAST、WEST、CENTER。是 JFrame 默认管理器。

Java Swing 教程:构建健壮 GUI 应用程序

FlowLayout

FlowLayout 按行顺序排列组件,空间不足自动换行。是 JPanel 默认管理器。

Java Swing 教程:构建健壮 GUI 应用程序

GridBagLayout

GridBagLayout 灵活性最高,允许组件跨多行多列、在网格内精确对齐。

Java Swing 教程:构建健壮 GUI 应用程序

示例:构建简单聊天窗口

下面完整程序演示如何将菜单、文本区、控制面板组合成聚聊天界面。

Java Swing 教程:构建健壮 GUI 应用程序

尝试自己编码再看解答。

// 含菜单、文本区、控件的完整 Swing 应用
import javax.swing.*;
import java.awt.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Chat Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
// 菜单栏
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("FILE");
JMenu helpMenu = new JMenu("Help");
menuBar.add(fileMenu);
menuBar.add(helpMenu);
JMenuItem openItem = new JMenuItem("Open");
JMenuItem saveItem = new JMenuItem("Save as");
fileMenu.add(openItem);
fileMenu.add(saveItem);
// 底部面板用 FlowLayout(默认)
JPanel panel = new JPanel();
panel.add(new JLabel("Enter Text"));
panel.add(new JTextField(10));
panel.add(new JButton("Send"));
panel.add(new JButton("Reset"));
// 中央文本区
JTextArea textArea = new JTextArea();
// 用 BorderLayout 添加组件到帧
frame.getContentPane().add(BorderLayout.SOUTH, panel);
frame.getContentPane().add(BorderLayout.NORTH, menuBar);
frame.getContentPane().add(BorderLayout.CENTER, textArea);
frame.setVisible(true);
}
}

java

  1. 打造零摩擦用户体验:UX 设计蓝图与实战五原则
  2. 开发 PLCnext 控制台应用 (C#):初学者指南
  3. 利用 Jlink 优化 PLCnext Control 上的 Java 9+ 应用
  4. Java EE应用部署Microsoft Azure全流程实战指南
  5. VHDL 字符串列表创建:最佳实践与示例
  6. Java 数组教程:声明、创建、初始化与示例代码
  7. Java 对象数组创建:分步指南
  8. Java 生成随机数实战:Random 与 Math.random 详解
  9. Java BufferedReader 读取文件:实战指南与示例
  10. Java 中 char 与 String 相互转换:实用示例与最佳实践
  11. Java 递归反转字符串:原理、代码实现与性能分析
  12. Java 10 应用类数据共享 (AppCDS):加速启动与减少内存占用