Java Swing 教程:如何在 Java 中创建 GUI 应用程序
Java 中的 Swing 是什么?
Java 中的 Swing 是一个图形用户界面 (GUI) 工具包,其中包含 GUI 组件。Swing 提供了一套丰富的控件和包,用于为 Java 应用程序创建复杂的 GUI 组件。Swing 是 Java Foundation Classes (JFC) 的一部分,JFC 是一个用于 Java GUI 编程的 API,提供 GUI 功能。
Java Swing 库构建在 Java 抽象窗口工具包 (AWT) 之上,AWT 是一个较旧的、依赖平台的 GUI 工具包。您可以从库中使用简单的 Java GUI 编程组件,如按钮、文本框等,而无需从头开始创建组件。
在本 Java Swing 教程中,您将学习 Java GUI 基础知识,例如:
Java Swing 类层次结构图

Java Swing 中的所有组件都是 JComponent,可以添加到容器类中。
什么是容器类?
容器类是可以在其上放置其他组件的类。因此,要创建 Java Swing GUI,我们至少需要一个容器对象。Java Swing 容器有 3 种类型。
- Panel:它是一个纯粹的容器,本身不是一个窗口。Panel 的唯一目的是在窗口上组织组件。
- Frame:它是一个功能齐全的窗口,带有标题和图标。
- Dialog:可以将其视为一个弹出窗口,在需要显示消息时弹出。它不像 Frame 那样是一个功能齐全的窗口。
Java 中的 GUI 是什么?
Java 中的 GUI (图形用户界面) 是 Java 应用程序的一个易于使用的可视化体验构建器。它主要由按钮、标签、窗口等图形组件组成,用户可以通过这些组件与应用程序进行交互。GUI 在为 Java 应用程序构建简单界面方面发挥着重要作用。
如何使用示例在 Java 中创建 GUI
现在,在本 Java GUI 教程中,让我们通过 Java Swing 示例了解如何在 Java 中创建 GUI。
步骤 1) 将代码复制到编辑器中
第一步,将以下代码复制到编辑器中。
import javax.swing.*; class gui{ 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); // Adds Button to content pane of frame frame.setVisible(true); } }
步骤 2) 运行代码
下一步,保存、编译和运行代码。
步骤 3) 将以下代码复制到编辑器中
现在,让我们向我们的 Frame 添加一个按钮。从给定的 Java UI 示例中,将以下代码复制到编辑器中。
import javax.swing.*; class gui{ 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("Press"); frame.getContentPane().add(button1); frame.setVisible(true); } }
步骤 4) 执行代码
接下来,执行代码。您将看到一个大按钮。
步骤 5) 添加两个按钮
添加两个按钮怎么样?将以下代码复制到编辑器中。
import javax.swing.*; class gui{ 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); } }
步骤 6) 保存并运行程序
接下来,保存、编译和运行程序。
步骤 7) 检查输出
意外输出 =? 按钮重叠了。
Java 布局管理器
布局管理器用于在容器内布局(或排列)GUI Java 组件。有许多布局管理器,但最常用的是:
Java BorderLayout
BorderLayout
将组件放置在最多五个区域:顶部、底部、左侧、右侧和中心。它是每个 Java JFrame 的默认布局管理器。
Java FlowLayout
FlowLayout
是每个 JPanel
的默认布局管理器。它只是将组件按顺序排列在一行中。
Java GridBagLayout
它是所有布局中最复杂的。它通过将组件放置在单元格网格中来对齐组件,允许组件跨越多个单元格。
步骤 8) 创建聊天 Frame
创建像下面这样的聊天 Frame 怎么样?
在查看下面的程序之前,请尝试自己编写代码。
//Usually you will require both swing and awt packages // even if you are working with just swings. import javax.swing.*; import java.awt.*; class gui { public static void main(String args[]) { //Creating the Frame JFrame frame = new JFrame("Chat Frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); //Creating the MenuBar and adding components JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("FILE"); JMenu m2 = new JMenu("Help"); mb.add(m1); mb.add(m2); JMenuItem m11 = new JMenuItem("Open"); JMenuItem m22 = new JMenuItem("Save as"); m1.add(m11); m1.add(m22); //Creating the panel at bottom and adding components JPanel panel = new JPanel(); // the panel is not visible in output JLabel label = new JLabel("Enter Text"); JTextField tf = new JTextField(10); // accepts upto 10 characters JButton send = new JButton("Send"); JButton reset = new JButton("Reset"); panel.add(label); // Components Added using Flow Layout panel.add(tf); panel.add(send); panel.add(reset); // Text Area at the Center JTextArea ta = new JTextArea(); //Adding Components to the frame. frame.getContentPane().add(BorderLayout.SOUTH, panel); frame.getContentPane().add(BorderLayout.NORTH, mb); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); } }