教程:使用 Swing 构建用户界面
IntelliJ IDEA的 UI Designer 插件使您可以使用 Swing 库组件为您的应用程序创建图形用户界面 (GUI)。 使用 UI Designer,您可以快速创建在顶层容器中使用的对话框和控件组,例如 JFrame。 这些元素可以与您直接在 Java 代码中定义的组件共存。
在本教程中,您将学习使用 UI Designer 的基础知识,并尝试为示例应用程序创建自己的 GUI 表单。 作为练习,我们将构建一个图形用户界面表单,用于编辑有关书籍的信息,例如书名、作者、类型和可用状态。
在本教程结束时,您的表单将类似于以下示例:
安装 Swing UI Designer 插件
此功能依赖于 Swing UI Designer 插件,您需要安装并启用。
-
按 Ctrl+Alt+S 打开设置,然后选择 。
-
打开 Marketplace 选项卡,找到 Swing UI Designer 插件,然后点击 安装 (如果系统提示,重新启动 IDE)。
克隆示例项目
该应用程序的源代码托管在 GitHub 上,位于 Build UI using Swing Sample Project
-
在主菜单中,前往 。
-
请指定存储库的 URL,然后点击 克隆 。
-
如有必要,请同意在新窗口中打开克隆的项目。
IntelliJ IDEA 存储了您在 .窗体 文件中创建的 GUI 窗体的信息。 表单可以与 Java 源文件关联,并置于 版本控制 之下。
首先,我们将创建一个新的 GUI 表单及其关联的 Java 类。
创建新的 GUI 表单
-
在 项目 工具窗口 Alt+1 ,选择 src.com.example.library.forms 包,按 Alt+Insert ,并选择 。
-
在打开的 新建GUI 窗体 对话框中,指定以下详细信息:
-
窗体名称(F) :指定
BookEditor作为新 GUI 表单的名称。 -
基础布局管理器(L) :从下拉列表中选择
GridLayoutManager (IntelliJ)布局管理器 。 -
创建绑定类(B) :选择该选项与窗体一起创建一个关联的 Java 类。
IntelliJ IDEA 将自动创建一个 Java 类并绑定到 GUI 表单。 绑定类作为 GUI 表单的底层代码表示。 它允许您将组件链接到类中的对应字段,并有助于实现表单的行为和功能。
-
类名(C) :保留与表单关联的 Java 类的默认名称。
-
-
点击 OK 。
我们的项目现在有一个 BookEditor.form 文件和 BookEditor.java 文件。 BookEditor.form 文件是我们安排 GUI 组件并设置其属性的地方。 该 BookEditor.java 文件将包含使我们的表单功能化的代码。
表单部分
在我们继续之前,让我们快速看一下 BookEditor.form 。 当您选择一个 .窗体 文件时,您将看到由四个主要部分组成的 UI Designer。
-
Form workspace :显示表单中组件的可视化表示。 创建新的 GUI 窗体时,顶级 JPanel 组件会默认添加到 IntelliJ IDEA 中,您可以添加更多组件来构建您的窗体。
-
组件树 :显示设计窗体中包含的组件,并使您可以导航和选择一个或多个组件。 我们的表单目前只有一个组件,JPanel,不过我们很快会添加更多组件。
-
属性检查器 :显示当前在表单工作区或 组件树中选择的组件的属性。
-
Palette :包含您可以放置在表单中的 UI 组件列表。
接下来,让我们继续构建表单并将必填字段、复选框和控件整合到我们的 Book 编辑器中。
首先,您可以处理 JPanel 组件,该组件充当容器来存储您要构建的 GUI。
设置 JPanel 容器
-
在 BookEditor.java 打开并将以下代码粘贴到文件顶部的包声明下:
import javax.swing.*; -
在 BookEditor.java 中也将以下代码粘贴到
BookEditor类中:private JPanel contentPane; -
请打开 BookEditor.form 文件。
在 组件树 部分,选择 JPanel 以查看组件的可用属性。
-
在属性检查器中,将 字段名称 属性的值设置为 contentPane 。
在表单上放置 GUI 组件
-
请打开 BookEditor.form 文件。
-
在 调色板 部分,选择 JTextField 并点击表单的顶部部分放置组件。
重复此操作,并按从上到下的顺序分别添加一个 JTextField 、一个 JComboBox 和一个 JCheckBox 组件。
IntelliJ IDEA 显示添加的组件在 组件树 中,并将相应的声明添加到 BookEditor.java 中。
-
打开 BookEditor.java 。 将
BookEditor类替换为以下内容,在其中我们重新命名了字段名并扩展了BookEditor类:public class BookEditor extends JFrame { private JPanel contentPane; private JTextField bookNameField;