在 NetBeans IDE 中设计 Swing GUI

更新时间:2023-05-13 01:07:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在 NetBeans IDE 中设计

Swing GUI

下载 quickstart-gui.zip,其中包含以下内容:

可脱机阅读的教程 HTML 文件。

GUI 生成器功能的详细交互式演示(.swf 文件)。

本教程将指导您完成使用 NetBeans IDE GUI 生成器为一个名为 ContactEditor 的应用程序创建图形用户界面 (Graphical User Interface, GUI) 的过程。在该过程中,您将布置一个 GUI 前端,以便查看和编辑员工数据库中包括的各个员工的联系信息。

在本教程中,您将了解如何执行以下操作:

使用 GUI 生成器界面 创建 GUI 容器 添加组件 调整组件大小 对齐组件 调整组件锚点 设置自动调整组件大小行为 编辑组件属性

学完本教程大约需要 30 分钟。

要学完本教程,您需要具备以下软件和资源。

软件或资源

NetBeans IDE

quickstart-gui.zip 要求的版本 版本 6.9、6.8 或 6.7 包含演示的 zip 文件 Java Development Kit (JDK) 版本 6 入门指南

使用 IDE 的 GUI 生成器,用户无需深入了解布局管理器,便可以生成具有专业外观的 GUI。只需将组件置于所需的位置,即可设置窗体布局。

有关 GUI 生成器可视反馈的描述,可参见 GUI 生成器可视反馈图例。 创建项目

由于 IDE 中的所有 Java 开发都是在项目内进行的,因此我们首先需要新建一个用来存储源文件及其他项目文件的 ContactEditor 项目。IDE 项目是一组 Java 源文件,外加与其关联的 meta 数据,其中包括特定于项目的属性文件、控制生成和运行设置的 Ant 生成脚本以及一个将 Ant 目标映射到 IDE 命令的 project.xml 文件。尽管 Java 应用程序通常包括几个 IDE 项目,但是,在本教程中,我们将生成一个完全存储在单个项目中的简单应用程序。

要创建新的 ContactEditor 应用程序项目,请执行以下操作:

1. 选择“文件”>“新建项目”。或者,也可以单击 IDE 工具栏中

的“新建项目”图标。

2. 在“类别”窗格中选择 "Java" 节点,在“项目”窗格中选择

“Java 应用程序”。单击“下一步”。

3. 在“项目名称”字段中输入 ContactEditor,然后指定项目位置。

4. 将“使用专用文件夹存储库”复选框保留为取消选中状态。

5. 确保“设置为主项目”复选框处于选中状态,并清除“创建主

类”字段。

6. 单击“完成”。

IDE 在系统上的指定位置创建 ContactEditor 文件夹。此文件夹

包含项目的所有关联文件,其中包括其 Ant 脚本、用于存储源文

件和测试的文件夹以及用于存储特定于项目的 meta 数据的文件

夹。要查看项目结构,请使用 IDE 的“文件”窗口。

创建 JFrame 容器

创建新应用程序后,您可能已注意到“项目”窗口中的“源包”文件夹包含一个空的 "<缺省包>" 节点。要继续生成界面,我们需要创建一个 Java 容器,以便放置所需的其他 GUI 组件。在此步骤中,我们将使用 JFrame 组件创建一个容器,并将该容器置于一个新包中。

要添加 JFrame 容器,请执行以下操作:

1. 在“项目”窗口中,右键单击 "ContactEditor" 节点,然后选择

“新建”>“JFrame 窗体”。

或者,也可以选择“新建”>“其他”>“Swing GUI 窗

体”>“JFrame 窗体”以查找 JFrame 窗体。

2. 输入 ContactEditorUI 作为类名。

3. 在“包”中输入 my.contacteditor。

4. 单击“完成”。

IDE 在 ContactEditorUI.java 应用程序内创建

ContactEditorUI 窗体和 ContactEditorUI 类,并在 GUI 生成

器中打开 ContactEditorUI 窗体。请注意,my.contacteditor 包

取代了缺省包。 返回页首

熟悉 GUI 生成器

现在,我们已为应用程序设置了一个新的项目,接下来让我们再花点时间来熟悉 GUI 生成器的界面。

注意:要通过交互式演示了解 GUI 生成器界面,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/001_gui_builder_ui.html 文件。

添加 JFrame 容器后,IDE 会在一个编辑器标签中打开新创建的

ContactEditorUI 窗体,该标签具有一个包含几个按钮的工具栏,如上图所示。ContactEditor 窗体在 GUI 生成器的“设计”视图中打开,并沿 IDE 的边缘自动出现三个其他窗口;利用这些窗口,可以在生成 GUI 窗体时导航、组织和编辑这些窗体。

GUI 生成器的各个窗口包括:

设计区域。GUI 生成器的主窗口,用于创建和编辑 Java GUI 窗体。通过使用工具栏的“源”和“设计”切换按钮,可以查看类的源代码或其 GUI 组件的图形视图。使用其他工具栏按钮可以方便地访问常用命令,例如,在“选择模式”和“连接模式”之间切换、对齐组件、设置自动调整组件大小行为以及预览窗体。

检查器。以树状分层结构的形式提供应用程序中所有组件(包括可视组件和非可视组件)的表示。“检查器”还提供有关树中哪个组件当前正在 GUI 生成器中进行编辑的可视反馈,并允许您在可用面板中组织这些组件。

组件面板。可用组件的可定制列表,其中包含 JFC/Swing、AWT 和

JavaBeans 组件以及布局管理器的标签。此外,您也可以使用定制器在组件面板中创建类别以及删除和重新排列其中显示的类别。

“属性”窗口。显示 GUI 生成器、“检查器”窗口、“项目”窗口或“文件”窗口中当前选定组件的属性。

如果单击“源”按钮,IDE 将在编辑器中显示应用程序的 Java 源代码,其中包括由 GUI 生成器自动生成的代码部分,这些部分将以蓝色区域表示,称为“保护块”。保护块是“源”视图中不可编辑的受保护区域。当处于“源”视图中时,只能编辑显示在编辑器白色区域中的代码。如果需要更改保护块内的代码,请单击“设计”按钮从 IDE 的编辑器返回至 GUI 生成器,以便对窗体进行必要的调整。保存所做的更改时,IDE 会更新文件的源代码。

注意:还有一个供高级开发者使用的组件面板管理器,使用该管理器可以将 JAR、库或其他项目中的定制组件添加到组件面板中。要通过组件面板管理器添加定制组件,请选择“工具”>“组件面板”>“Swing/AWT 组件”。 返回页首

主要概念

通过简化创建图形界面的工作流,IDE 的 GUI 生成器解决了创建 Java GUI 的核心问题,从而使开发者不必再使用复杂的 Swing 布局管理器。这一点是通过扩展目前的 NetBeans IDE GUI 生成器功能以支持直观的“自由设计”模式(具有易于理解和使用的简单布局规则)来实现的。设置窗体布局时,GUI 生成器将提供可视基准线,用于建议最佳组件间距和对齐方式。在后台,GUI 生成器会将您的设计理念转化为使用新的 GroupLayout 布局管理器和其他 Swing 结构实现的功能性 UI。由于它使用动态布局模型,因此使用 GUI 生成器生成的 GUI 在运行时将按预期方式工作,同时会在不改变组件之间的定义关系的情况下进行相应的调整以适应所做的任何更改。只要您调整窗体大小、转换语言环境或指定不同的外观,GUI 就会根据目标外观的插入和偏移量自动进行调整。

自由设计

在 IDE 的 GUI 生成器中,只需像使用绝对定位那样将组件放在所需的位置,便可以生成窗体。GUI 生成器将确定需要哪些布局属性,然后自动生成代码。您无需关注插入量、锚点以及填充之类的问题。

自动组件定位(对齐放置)

将组件添加到窗体时,GUI 生成器将提供可视反馈,协助您根据操作系统的外观来定位组件。GUI 生成器针对组件应在窗体中放置的位置提供一些有帮助的内联提示和其他可视反馈,并自动使组件沿基准线对齐。它根据已放在窗体中的组件的位置提出这些建议,同时使填充仍保持灵活性,以便在运行时能够正确地呈现不同的目标外观。

可视反馈

GUI 生成器还提供有关组件锚点和链接关系的可视反馈。通过这些指示符,可以快速识别各种定位关系和组件锁定行为,这些关系和行为将影响 GUI 在运行时的显示和行为方式。这加快了 GUI 的设计过程,使您能够快速创建具有专业外观和相应功能的可视界面。 返回页首

先打基础

现在,您已熟悉了 GUI 生成器的界面,接下来该着手开发 ContactEditor 应用程序的 UI 了。在此部分,我们将介绍如何使用 IDE 的组件面板将所需的各种 GUI 组件添加到窗体中。

有了 NetBeans 的“自由设计”模式,您将不必再费力地使用布局管理器来控制容器内组件的大小和位置。您需要做的就是将所需的组件拖放(或选取并放置)到 GUI 窗体中,如下面提供的各图所示。

添加组件:基础

尽管 IDE 的 GUI 生成器简化了创建 Java GUI 的过程,但是在开始布局之前大体设计出界面的外观通常还是会很有帮助的。许多界面设计者将此视为一种“最佳做法”技术,但对本教程来说,只需跳转至后面的预览 GUI 部分,浏览一下最终窗体应具有的外观即可。

由于我们已经将 JFrame 添加为窗体的顶层容器,因此下一步需要添加几个 JPanel,以便使用带标题的边框将 UI 的多个组件归到其中。请参见以下各图,并注意在完成此操作时 IDE 的“选取并放置”行为。

添加 JPanel:

1. 在“组件面板”窗口中,通过单击 Swing 类别中的“面板”组件

并松开鼠标按钮,选择该组件。

2. 将光标移到 GUI 生成器中窗体的左上角。当组件的位置靠近容器

的左上边缘时,将出现指示首选边距的水平和垂直对齐基准线。

在窗体中单击,将 JPanel 放在此位置上。

JPanel 组件出现在 ContactEditorUI 窗体中,并以橙色突出显

示,表示它处于选中状态,如下图所示。在松开鼠标按钮后,将

出现小指示符来显示组件的锚点关系,并在“检查器”窗口中显

示相应的 JPanel 节点。

接下来,需要调整 JPanel 的大小,为稍后在其中放置的组件留出空间,在此我们需要先花一些时间了解 GUI 生成器的另一个可视化功能。要执行此操作,我们需要取消选中刚添加的 JPanel。由于尚未添加标题边框,因此将看不到该面板。不过请注意,当将光标移动到 JPanel 上时,其边缘会变为浅灰色,这样便可以清楚地看见它的位置。只需单击该组件内的任意位置,便可以重新选中它,并且将会再次出现大小调整控柄和锚点指示符。

调整 JPanel 的大小:

1. 选中刚刚添加的 JPanel。小的方形大小调整控柄将会再次出现在

组件周围。

2. 单击并按住 JPanel 右边缘上的大小调整控柄,然后拖动直到靠

近窗体边缘处出现对齐基准虚线。

3. 松开大小调整控柄以调整组件大小。

按照建议的偏移将 JPanel 组件延伸至容器的左边距和右边距,

如下图所示。

至此,我们已添加了用于容纳 UI 名称信息的面板,接下来需要重复该过程来添加另一个面板,它位于第一个面板正下方,用于容纳电子邮件信息。请参见以下各图再次执行前面的两个任务,同时注意 GUI 生成器的建议位置。请注意,建议的两个 JPanel 之间的垂直间距要比边缘处的间距小得多。添加了第二个 JPanel 后,调整其大小,使它充满窗体的其余垂直空间。

由于我们需要在外观上区分出 GUI 上半部分和下半部分的功能,因此需要为每个 JPanel 添加边框和标题。我们将首先使用“属性”窗口完成此操作,然后将尝试使用弹出式菜单完成此操作。

将标题边框添加到 JPanel 中:

1. 选择 GUI 生成器中的顶部 JPanel。

2. 在“属性”窗口中,单击 "border" 属性旁边的省略号按钮

(...)。

3. 在出现的 JPanel 边框编辑器中,选择“可用边框”窗格中的

“带标题的边框”节点。

4. 在位于下方的“属性”窗格中,为“标题”属性输入 Name。

5. 单击“字体”属性旁边的省略号 (...),然后为“字体样式”选

择“粗体”,为“大小”输入 12。单击“确定”退出对话框。

6. 选择底部 JPanel 并重复步骤 2 至 5,但此次需要右键单击

JPanel,然后使用弹出式菜单访问“属性”窗口。为“标题”属

性输入 E-mail。

带标题的边框将被添加到两个 JPanel 组件中。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的

quickstart-gui_swfs/002_add_components_basic.html 文件。

将单个组件添加到窗体

现在,我们需要着手添加一些组件,它们实际上将提供联系人列表中的联系人信息。在此任务中,我们将添加四个显示联系人信息的 JTextField 以及描述它们的 JLabel。执行此任务时,请注意 GUI 生成器显示的水平和垂直基准线,它们用于根据操作系统外观所定义的间距来建议首选组件间距。这可确保在运行时自动呈现与目标操作系统的外观一致的 GUI。

将 JLabel 添加到窗体中:

1. 在“组件面板”窗口中,从 Swing 类别中选择“标签”组件。

2. 将光标移到先前添加的 Name JPanel 上。当出现基准线指示

JLabel 位于 JPanel 的左上角(此时与上边缘和左边缘之间存在

较小的边距)时,请单击鼠标以放置此标签。

JLabel 将被添加到窗体中,并且“检查器”窗口中将添加表示该

组件的相应节点。

在继续操作之前,我们需要编辑刚添加的 JLabel 的显示文本。尽管可以在任何时候编辑组件显示文本,但最简便的方法是在添加它们时进行编辑。 编辑 JLabel 的显示文本:

1. 双击 JLabel 以选中其显示文本。

2. 键入 First Name:,然后按 Enter 键。

将显示 JLabel 的新名称,并且组件的宽度会随着编辑的内容进

行相应地调整。

接下来,我们将添加 JTextField,以便大致了解 GUI 生成器的基线对齐功能。 将 JTextField 添加到窗体中:

1. 在“组件面板”窗口中,从 Swing 类别中选择“文本字段”组

件。

2. 将光标移到紧靠刚添加的 First Name: JLabel 右侧的位置。当

出现水平基准线指示 JTextField 的基线与 JLabel 的基线对

齐,并且以垂直基准线给出两个组件之间的建议间距时,请单击

鼠标以放置 JTextField。

JTextField 将与窗体中 JLabel 的基线对齐,如下图所示。请注

意,JLabel 略微向下进行了移动,以便与较高的文本字段的基线

对齐。同以前一样,“检查器”窗口中将添加表示该组件的节点。

在继续操作之前,我们需要在刚添加的两个组件的右侧紧接着再添加一个

JLabel 和一个 JTextField,如下图所示。这次输入 Last Name: 作为 JLabel 的显示文本,并暂时将 JTextField 的占位符文本保留原样。

调整 JTextField 的大小:

1. 选中刚添加到 Last Name: JLabel 右侧的 JTextField。

2. 将 JTextField 右边缘的大小调整控柄向封闭 JPanel 的右边缘

拖动。

3. 当出现垂直对齐基准线以给出文本字段与 JPanel 右边缘之间的

建议边距时,请松开鼠标按钮以调整 JTextField 的大小。

JTextField 的右边缘将与 JPanel 的边缘对齐,并留出建议的边

缘边距,如下图所示。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/003_add_individual_components.html 文件。 将多个组件添加到窗体

现在,我们将添加 Title: 和 Nickname: JLabel,它们用于描述我们将在稍后添加的两个 JTextField。我们将在按住 Shift 键的同时选取并放置组件,以便将它们快速添加到窗体中。执行此任务时,同样请注意 GUI 生成器显示的用于建议首选组件间距的水平和垂直基准线。

将多个 JLabel 添加到窗体中:

1. 在“组件面板”窗口中,通过单击 Swing 类别中的“标签”组件

并松开鼠标按钮,选择该组件。

2. 将光标移到先前在窗体中添加的 First Name: JLabel 的正下方。当出现基准线指示新 JLabel 的左边缘与上方 JLabel 的左边缘

对齐,并且它们之间存在较小边距时,请按住 Shift 键单击鼠标

以放置第一个 JLabel。

3. 继续按住 Shift 键,同时在紧邻第一个 JLabel 的右侧单击鼠标

以放置另一个 JLabel。确保在放置第二个 JLabel 前松开 Shift

键。如果在放置最后一个 JLabel 前忘记松开 Shift 键,只需按

Esc 键即可。

JLabel 将被添加到窗体中,从而创建了第二行组件,如下图所示。

“检查器”窗口中将添加表示每个组件的节点。

在继续操作之前,我们需要编辑 JLabel 的名称,以便能够看到将在以后设置的对齐效果。

编辑 JLabel 的显示文本:

1. 双击第一个 JLabel 以选中其显示文本。

2. 键入 Title:,然后按 Enter 键。

3. 重复步骤 1 和 2,为第二个 JLabel 的名称属性输入

Nickname:。

JLabel 的新名称将显示在窗体中,并且它们会随着编辑内容的加

宽而发生位移,如下图所示。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/004_add_multi_components.html 文件。

插入组件

通常,需要在窗体中已放置的组件之间添加组件。只要在两个现有组件之间添加组件,GUI 生成器就会自动移动它们,以便为新组件留出空间。为了对此进行演示,我们将在先前添加的两个 JLabel 之间插入一个 JTextField,如下面的两幅图所示。

在两个 JLabel 之间插入 JTextField:

1. 在“组件面板”窗口中,从 Swing 类别中选择“文本字段”组

件。

2. 将光标移到位于第二行的 Title: 和 Nickname: JLabel 上,使

JTextField 与两者都重叠,并与它们的基线对齐。如果在放置新

文本字段时遇到困难,可以将其与 Nickname JLabel 的左基准线

对齐,如下面的第一幅图所示。

3. 单击鼠标以将 JTextField 放置在 Title: 和 Nickname: JLabel 之间。

JTextField 在两个 JLabel 之间对齐放置。最右侧的 JLabel 会

向 JTextField 的右侧移动,以适应建议的水平偏移。

我们仍需要将另外一个 JTextField 添加到窗体中,它将在窗体的右侧显示每个联系人的昵称。

添加 JTextField:

1. 在“组件面板”窗口中,从 Swing 类别中选择“文本字段”组

件。

2. 将光标移到 Nickname 标签的右侧,然后单击鼠标以放置该文本

字段。

JTextField 在其左侧的 JLabel 旁边对齐放置。

调整 JTextField 的大小:

1. 将在先前任务中添加的 Nickname: 标签的 JTextField 大小调

整控柄向封闭 JPanel 的右侧拖动。

2. 当出现垂直对齐基准线以给出文本字段与 JPanel 边缘之间的建

议边距时,请松开鼠标按钮以调整 JTextField 的大小。

JTextField 的右边缘将与 JPanel 的边缘对齐,并留出建议的边

缘边距;同时,GUI 生成器会推断出合适的大小调整行为。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/005_insert_components.html 文件。

返回页首

更进一步

对齐是创建具有专业外观的 GUI 的一个最基本方面。在上一部分中,我们通过将 JLabel 和 JTextField 组件添加到 ContactEditorUI 窗体中,大致了解了 IDE 的对齐功能。接下来,我们将在使用应用程序所需的其他各种组件的过程中更深入地了解 GUI 生成器的对齐功能。

组件对齐

每次将组件添加到窗体中时,GUI 生成器都会有效地将它们对齐,出现的对齐基准线可以证明这一点。但是,有时也需要在组件组之间指定不同的关系。先前我们添加了四个 ContactEditor GUI 所需的 JLabel,但并未将它们对齐。现在,我们将对齐两列 JLabel,以使它们的右边缘排列整齐。

对齐组件:

1. 按住 Ctrl 键,然后单击以选择窗体左侧的 First Name: 和

Title: JLabel。

2. 单击工具栏中的“列向右对齐”按钮 ()。或者,也可以右键单

击其中任一组件,然后从弹出式菜单中选择“对齐”>“列右

侧”。

3. 对 Last Name: 和 Nickname: JLabel 也重复此操作。

JLabel 的位置将会移动,以使它们的显示文本的右边缘对齐。同

时,也会更新锚点关系,指示组件已分组。

在结束先前添加的 JTextField 的操作之前,我们需要确保 JLabel 之间插入的两个 JTextField 设置为可正确调整大小。与拉伸到窗体右边缘的两个 JTextField 不同,所插入组件的大小可调性不是自动设置的。

设置调整组件大小行为:

1. 按住 Ctrl 键单击两个插入的 JTextField 组件,以便在 GUI 生

成器中将它们选中。

2. 在同时选中这两个 JTextField 的情况下,右键单击其中的任何

一个,然后从弹出式菜单中选择“自动调整大小”>“水平”。

JTextField 将被设置为在运行时水平调整大小。同时,也会更新

对齐基准线和锚点指示符,以提供组件关系的可视反馈。

将组件设置为相同大小:

1. 按住 Ctrl 键单击窗体中的所有四个 JTextField 以将它们选

中。

2. 在选中所有 JTextField 的情况下,右键单击其中任何一个,然

后从弹出式菜单中选择“设置缺省大小”。

这些 JTextField 均会设置为相同的宽度,并且每个 JTextField

的上边缘都将添加指示符,以提供组件关系的可视反馈。

现在,我们需要添加另一个描述 JComboBox 的 JLabel,用户可以使用该 JComboBox 来选择 ContactEditor 应用程序将显示的信息格式。

将 JLabel 与组件组对齐:

1. 在“组件面板”窗口中,从 Swing 类别中选择“标签”组件。

2. 将光标移到 JPanel 左侧的 First Name 和 Title JLabel 下方。当出现基准线指示新 JLabel 的右边缘与上方组件组(两个

JLabel)的右边缘对齐时,请单击鼠标以放置该组件。

该 JLabel 将与上方的 JLabel 列右侧对齐,如下图所示。GUI 生

成器将更新指示组件间距和锚点关系的对齐状态线。

与在先前的示例中一样,双击该 JLabel 以选中其显示文本,然后输入 Display Format: 作为显示名称。请注意,当该 JLabel 对齐放置时,其他组件将发生位移以适应较长的显示文本。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/006_align_components.html 文件。

基线对齐

每当添加或移动包含文本的组件(JLabel、JTextField 等)时,IDE 就会提供对齐建议,这些建议基于组件中文本的基线。例如,先前插入 JTextField 时,其基线会自动与相邻的 JLabel 对齐。

现在,我们将添加一个组合框,用户可以使用它来选择 ContactEditor 应用程序将显示的信息格式。在添加 JComboBox 时,我们会将其基线与 JLabel 文本的基线对齐。请再次注意为帮助定位而出现的基线对齐基准线。

对齐组件的基线:

1. 在“组件面板”窗口中,从 Swing 类别中选择“组合框”组件。

2. 将光标移到紧靠刚添加的 JLabel 右侧的位置。当出现水平基准

线指示 JComboBox 的基线与 JLabel 中文本的基线对齐,并且以

垂直基准线给出两个组件之间的建议间距时,请单击鼠标以放置

该组合框。

该组件将与其左侧的 JLabel 中的文本的基线对齐,如下图所示。

GUI 生成器将显示指示组件间距和锚点关系的状态线。

调整 JComboBox 的大小:

1. 选中 GUI 生成器中的 JComboBox。

2. 将 JComboBox 右边缘上的大小调整控柄向右侧拖动,直到出现对

齐基准线以给出 JComboBox 和 JPanel 边缘之间的建议首选偏

移。

如下图所示,JComboBox 的右边缘将与 JPanel 的边缘对齐,并

留出建议的边缘边距;同时,组件的宽度会自动设置为随窗体调

整大小。

编辑组件模型不在本教程的涉及范围内,因此我们将暂时保留 JComboBox 的占位符项列表的原样。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/007_insert_baseline.html 文件。 返回页首

回顾所学内容

我们已经出色地完成了生成 ContactEditor GUI 的过程,现在我们需要花几分钟再添加几个界面所需的组件来重温学过的内容。

到目前为止,我们一直在介绍如何将组件添加到 ContactEditor GUI 中,并使用 IDE 的对齐基准线来帮助定位。但还有另一个重要方面,就是了解如何在组件放置过程中使用锚点。尽管我们尚未讨论它,但您已经利用了此功能,只是没有意识到。如前面所提到的,只要将组件添加到窗体中,IDE 就会通过基准线给出建议的目标外观首选位置。在放置新组件的同时,会将该组件锚定在最近的容器边缘或组件上,以确保在运行时保持组件关系。在此部分,我们将重点介绍如何以更简化的方式完成这些任务,同时指出 GUI 生成器在后台执行的工作。 添加、对齐和锚定

在 GUI 生成器中,可以通过简化典型工作流操作来快捷、轻松地设置窗体布局。只要将组件添加到窗体中,GUI 生成器就会自动将组件对齐放置到首选位置并设置所需的链接关系,以便您可以专注于设计窗体,而不必疲于应付复杂的实现细节。

添加并对齐 JLabel 以及编辑其显示文本:

1. 在“组件面板”窗口中,从 Swing 类别中选择“标签”组件。

2. 将光标移到窗体底部 JPanel 的 E-mail 标题的正下方。当出现

基准线指示该标签位于 JPanel 的左上角(此时与上边缘和左边

缘之间存在较小的边距)时,请单击鼠标以放置 JLabel。

3. 双击 JLabel 以选中其显示文本。然后,键入 E-mail Address: 并

按 Enter 键。

JLabel 将对齐放置到窗体中的首选位置,并且锚定在封闭

JPanel 的上边缘和左边缘。同以前一样,“检查器”窗口中将添

加表示该组件的相应节点。

添加 JTextField:

1. 在“组件面板”窗口中,从 Swing 类别中选择“文本字段”组

件。

2. 将光标移到紧靠刚添加的 E-mail Address 标签右侧的位置。当

出现基准线指示 JTextField 的基线与 JLabel 中文本的基线对

齐,并且以垂直基准线给出两个组件之间的建议边距时,请单击

鼠标以放置该文本字段。

JTextField 在 E-mail Address: JLabel 的右侧对齐放置并链接

到该 JLabel。“检查器”窗口中也将添加与其对应的节点。

3. 将 JTextField 的大小调整控柄向封闭 JPanel 的右侧拖动,直

到出现对齐基准线以给出 JTextField 和 JPanel 边缘之间的建

议偏移。

JTextField 的右边缘将与指示首选边距的对齐基准线对齐。

现在,我们需要添加 JList,它将用于显示 ContactEditor 的整个联系人列表。 添加 JList 并调整其大小:

1. 在“组件面板”窗口中,从 Swing 类别中选择“列表”组件。

2. 将光标移到先前添加的 E-mail Address JLabel 的正下方。当出

现基准线指示 JList 的左边缘和上边缘分别与 JPanel 的左边

缘和上方的 JLabel 对齐(留出首选边距)时,请单击鼠标以放

置 JList。

3. 将 JList 的右侧大小调整控柄向封闭 JPanel 的右侧拖动,直到

出现对齐基准线以指示其宽度与上方 JTextField 的宽度相同。

JList 在对齐基准线指定的位置对齐放置,并且“检查器”窗口

中显示与其对应的节点。另请注意,窗体将会扩展以适应新添加

的 JList。

由于 JList 用于显示较长的数据列表,因此通常需要添加 JScrollPane。只要添加了需要 JScrollPane 的组件,GUI 生成器就会自动为您添加 JScrollPane。因为 JScrollPane 是非可视组件,所以必须使用“检查器”窗口才能查看或编辑 GUI 生成器创建的任何 JScrollPane。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/008_add_align_anchor.html 文件。

调整组件大小

通常,将几个相关组件(如模态对话框中的按钮)设置为相同大小对保持外观一致性很有好处。为演示此操作,我们将在 ContactEditor 窗体中添加四个 JButton,这些按钮用于添加、编辑和删除联系人列表中的各个条目,如以下各

图所示。之后,我们将四个按钮设置为相同大小,以便能够容易地识别出它们在提供相关的功能。

添加并对齐多个按钮以及编辑其显示文本:

1. 在“组件面板”窗口中,选择“按钮”组件。

2. 将 JButton 移到底部 JPanel 中 E-mail Address JTextField

的右边缘。当出现基准线指示 JButton 的基线和右边缘与

JTextField 的基线和右边缘对齐时,请按住 Shift 键单击鼠标,

从而沿 JFrame 的右边缘放置第一个按钮。在松开鼠标按钮时,

JTextField 的宽度会缩减以容纳 JButton。

3. 将光标移到底部 JPanel 中 JList 的右上角。当出现基准线指示 JButton 的上边缘和右边缘与 JList 的上边缘和右边缘对齐时,

请按住 Shift 键单击鼠标,从而沿 JFrame 的右边缘放置第二个

按钮。

4. 在已添加的两个 JButton 的下方再添加两个 JButton,以创建一

个列。请确保按照建议的间距放置 JButton 并保持间距的一致

性。如果在放置最后一个 JButton 前忘记松开 Shift 键,只需

按 Esc 键即可。

5. 设置每个 JButton 的显示文本。(可以通过右键单击按钮并选择

“编辑文本”来编辑按钮的文本。或者,也可以单击按钮,稍等

片刻,然后再次单击按钮。)为最上面的按钮输入 Add,为第二

个按钮输入 Edit,为第三个按钮输入 Remove,为第四个按钮输

入 As Default。

JButton 组件在对齐基准线指定的位置对齐放置。按钮的宽度将

会更改以适应新名称。

现在,已将按钮放置在所需的位置,接下来,我们要将四个按钮设置为相同的大小以保持外观一致性,同时表明它们在功能上是彼此相关的。

将组件设置为相同大小:

1. 通过按住 Ctrl 键进行选择,选中所有四个 JButton。

2. 右键单击其中一个 JButton,然后从弹出式菜单中选择“相同大

小”>“相同宽度”。

JButton 的大小将被设置为与名称最长的按钮的大小相同。

注意:要查看上述过程的演示,请在 zip 文件夹中打开下载的 quickstart-gui_swfs/009_size_components.html 文件。

缩排

通常,需要将多个组件归到另一个组件下,以表明它们属于一个相关功能组。一个典型的例子是,在同一标签下放置几个相关的复选框。利用 GUI 生成器中提供的专用基准线(针对操作系统外观给出首选偏移建议),可以轻松完成缩排。 在此部分,我们将在一个 JLabel 下添加几个 JRadioButton,用户可以使用这些 JRadioButton 定制应用程序显示数据的方式。请参见以下各图来执行此任务,或者单击此操作过程之后的“查看演示”链接来查看交互式演示。 缩排 JLabel 下的 JRadioButton:

1. 将一个名为 Mail Format 的 JLabel 添加到窗体中 JList 的下

方。确保该标签与上方的 JList 左侧对齐。

2. 在“组件面板”窗口中,从 Swing 类别中选择“单选按钮”组

件。

3. 将光标移到刚添加的 JLabel 下方。当出现基准线指示

JRadioButton 的左边缘与 JLabel 的左边缘对齐时,请将

本文来源:https://www.bwwdw.com/article/50pe.html

Top