Java 中文官方教程 2022 版(十四)(1)https://developer.aliyun.com/article/1486371
关键语句已用粗体标出。其他语句用于错误处理。
一旦JarRunner
确定了应用程序的入口点类,只剩下两个步骤:将任何参数传递给应用程序并实际启动应用程序。JarRunner
使用以下代码执行这些步骤:
// Get arguments for the application String[] newArgs = new String[args.length - 1]; System.arraycopy(args, 1, newArgs, 0, newArgs.length); // Invoke application's main class try { cl.invokeClass(name, newArgs); } catch (ClassNotFoundException e) { fatal("Class not found: " + name); } catch (NoSuchMethodException e) { fatal("Class does not define a 'main' method: " + name); } catch (InvocationTargetException e) { e.getTargetException().printStackTrace(); System.exit(1); }
回想一下,第一个命令行参数是 JAR 捆绑应用程序的 URL。因此,要传递给该应用程序的任何参数都在args
数组中的元素1
及以后。JarRunner
获取这些元素,并创建一个名为newArgs
的新数组传递给应用程序(上面的粗体行)。然后,JarRunner
将入口点的类名和新参数列表传递给JarClassLoader
的invokeClass
方法。正如我们在前一节中看到的,invokeClass
将加载应用程序的入口点类,传递任何参数,并启动应用程序。
问题和练习:JAR
原文:
docs.oracle.com/javase/tutorial/deployment/jar/QandE/questions.html
问题
- 如何调用打包为 JAR 文件的小程序?
-e
选项在jar
命令中的目的是什么?- JAR 文件中 MANIFEST 的重要性是什么?
- 如何修改 JAR 的 MANIFEST 文件?
检查你的答案。
教程:使用 Swing 创建 GUI
也被称为Swing 教程
本教程告诉您如何为应用程序和小程序创建图形用户界面(GUI),使用 Swing 组件。如果您想将 JavaFX 集成到您的 Swing 应用程序中,请参阅将 JavaFX 集成到 Swing 应用程序中。
是一个快速入门课程。首先它为您提供了关于 Swing 的一些背景知识。然后告诉您如何编译和运行使用 Swing 组件的程序。
是开始使用 Swing 的最快最简单的方法。本课程探讨了 NetBeans IDE 的 GUI 构建器,这是一个强大的功能,让您可以直观地构建您的图形用户界面。
告诉您如何使用 Swing 组件中的每个部分 — 按钮、表格、文本组件等等。它还告诉您如何使用边框和图标。
讨论了并发如何应用于 Swing 编程。包括有关事件分派线程和 SwingWorker 类的信息。
告诉您如何使用动作、定时器和系统托盘;如何与桌面类集成,如何支持辅助技术,如何打印表格和文本,如何创建启动画面,以及如何在对话框中使用模态。
告诉您如何选择布局管理器,如何使用 Java 平台提供的每个布局管理器类,如何使用绝对定位而不是布局管理器,以及如何创建自己的布局管理器。
告诉您如何指定 Swing 组件的外观和感觉。
告诉您实现应用程序中数据传输所需的知识。
告诉您如何在程序中处理事件。
提供了关于绘制自己的 Swing 组件的信息。它讨论了特定于 Swing 组件的绘制问题,概述了绘制概念,并提供了自定义组件自行绘制的示例。
其他与 UI 相关的路径
虽然这是学习 GUI 的主要路径,但并不是唯一涉及 UI 相关信息的路径。
- 2D 图形,描述了 JDK 中可用的 2D 图形功能。
- 声音,讨论了 JDK 中可用的声音功能。
- Java Applets,描述了仅适用于小程序的 API。
- 基本 Java 类,涵盖了许多主题,包括属性和标准 I/O 流。
- JavaFX 文档,描述了如何使用 JavaFX 构建 UI。
- Bonus 路径包含 全屏独占模式 API,这是一个介绍如何使用 v1.4 中引入的 API 直接向屏幕渲染图形的课程。
课程:开始使用 Swing
示例索引
这节课简要介绍了如何使用 Swing。在介绍 Swing 之后,它会带领你编译和运行一个使用 Swing 包的程序。
接下来的课程,使用 NetBeans IDE 学习 Swing,将在这些第一步的基础上构建,帮助你创建几个逐渐复杂的示例。现在,让我们从基础知识开始。
关于 JFC 和 Swing
这部分为你提供了 Swing 的概述。
编译和运行 Swing 程序
这部分为你提供了详细的说明,告诉你从哪里获取最新的 JDK,以及如何创建、编译和运行使用 Swing 组件的程序。
如果你有兴趣使用 JavaFX 包来创建你的 UI,请查看JavaFX 文档。要部署,请参阅Java 平台标准版部署指南。
关于 JFC 和 Swing
JFC 是 Java Foundation Classes 的缩写,它包含了一组用于构建图形用户界面(GUI)和为 Java 应用程序添加丰富的图形功能和交互性的特性。它被定义为包含下表所示的特性。
功能 | 描述 |
Swing GUI 组件 | 包括从按钮到分割窗格到表格的所有内容。许多组件能够进行排序、打印和拖放等功能,这只是支持的功能之一。 |
Pluggable Look-and-Feel Support | Swing 应用程序的外观和感觉是可插拔的,允许选择外观和感觉。例如,同一个程序可以使用 Java 或 Windows 外观和感觉。此外,Java 平台支持 GTK+ 外观和感觉,使得数百种现有的外观和感觉可用于 Swing 程序。许多其他外观和感觉包可以从各种来源获取。 |
Accessibility API | 允许辅助技术,如屏幕阅读器和盲文显示器,从用户界面获取信息。 |
Java 2D API | 允许开发人员在应用程序和小程序中轻松地整合高质量的 2D 图形、文本和图像。Java 2D 包括广泛的 API,用于生成和发送高质量的输出到打印设备。 |
国际化 | 允许开发人员构建可以与全球用户以其自己的语言和文化习俗交互的应用程序。借助输入法框架,开发人员可以构建接受使用数千个不同字符的语言(如日语、中文或韩语)的文本的应用程序。 |
本教程集中讨论 Swing 组件。我们将帮助您选择适合您的 GUI 的组件,告诉您如何使用它们,并为您提供使用它们的有效背景信息。我们还将讨论其他与 Swing 组件相关的功能。
我应该使用哪些 Swing 包?
Swing API 强大、灵活 —— 也是庞大的。Swing API 有 18 个公共包:
javax.accessibility |
javax.swing.plaf |
javax.swing.text |
javax.swing |
javax.swing.plaf.basic |
javax.swing.text.html |
javax.swing.border |
javax.swing.plaf.metal |
javax.swing.text.html.parser |
javax.swing.colorchooser |
javax.swing.plaf.multi |
javax.swing.text.rtf |
javax.swing.event |
javax.swing.plaf.synth |
javax.swing.tree |
javax.swing.filechooser |
javax.swing.table |
javax.swing.undo |
幸运的是,大多数程序只使用 API 的一个小子集。本教程为您整理了 API,为您提供常见代码示例,并指导您可能需要的方法和类。本教程中的大部分代码仅使用一个或两个 Swing 包:
javax.swing
javax.swing.event
(不总是必需的)
编译和运行 Swing 程序
原文:
docs.oracle.com/javase/tutorial/uiswing/start/compile.html
本节介绍如何从命令行编译和运行一个 Swing 应用程序。有关使用 NetBeans IDE 编译和运行 Swing 应用程序的信息,请参阅在 NetBeans IDE 中运行教程示例。编译说明适用于所有 Swing 程序 — 包括小程序和应用程序。以下是你需要遵循的步骤:
- 如果你还没有安装最新版本的 Java SE 平台,那么现在就安装吧。
- 创建一个使用 Swing 组件的程序。
- 编译程序。
- 运行程序。
安装最新版本的 Java SE 平台
你可以免费从www.oracle.com/technetwork/java/javase/downloads/index.html
下载 JDK 的最新版本。
创建一个使用 Swing 组件的程序
你可以使用我们提供的一个简单程序,名为 HelloWorldSwing,它会显示如下图所示的 GUI。该程序在一个单独的文件中,HelloWorldSwing.java
。当你保存这个文件时,你必须确保其名称的拼写和大小写完全匹配。
HelloWorldSwing.java
示例,就像我们所有的 Swing 教程示例一样,都是在一个包内创建的。如果你查看源代码,你会在文件开头看到以下行:
package start;
这意味着你必须将HelloWorldSwing.java
文件放在start
目录内。你需要从start
目录的上一级目录编译和运行示例。使用 Swing 组件课程中的教程示例位于components
包内,编写事件监听器课程中的示例位于events
包内,依此类推。更多信息,你可能想看看Packages
课程。
编译程序
你的下一步是编译程序。要编译示例,从HelloWorldSwing.java
文件的上一级目录开始:
javac start/HelloWorldSwing.java
如果你愿意,你可以在start
目录中编译示例:
javac HelloWorldSwing.java
但是你必须记住离开start
目录才能执行程序。
如果你无法编译,请确保你正在使用 Java 平台的最新版本中的编译器。你可以使用以下命令验证你的编译器或 Java 运行环境(JRE)的版本。
javac -version java -version
更新了 JDK 后,你应该可以在不进行任何更改的情况下使用本教程中的程序。另一个常见错误是安装了 JRE 而不是编译这些程序所需的完整 Java 开发工具包(JDK)。请参考入门指南来帮助你解决遇到的任何编译问题。另一个资源是Java™ SE 6 桌面技术故障排除指南。
运行程序
编译程序成功后,你可以运行它。从start
目录的上一级目录开始:
java start.HelloWorldSwing
课程:使用 NetBeans IDE 学习 Swing
示例索引
本课程介绍了使用 Swing 和 NetBeans IDE 进行图形用户界面(GUI)编程。正如您在"Hello World!"课程中学到的,NetBeans IDE 是一个免费的、开源的、跨平台的集成开发环境,内置支持 Java 编程语言。与使用文本编辑器编码相比,它提供了许多优势;我们建议尽可能使用它。如果您还没有阅读上述课程,请立即花点时间阅读。它提供了有关下载和安装 JDK 和 NetBeans IDE 的宝贵信息。
本课程的目标是通过设计一个简单的应用程序,将温度从摄氏度转换为华氏度来介绍 Swing API。其 GUI 将是基本的,只关注可用的 Swing 组件的子集。我们将使用 NetBeans IDE GUI 构建器,它使用户界面的创建变得简单易行,只需拖放即可。其自动生成代码功能简化了 GUI 开发过程,让您可以专注于应用程序逻辑,而不是底层基础设施。
因为这节课是一个逐步检查特定操作的清单,我们建议您运行 NetBeans IDE,并在阅读过程中执行每个步骤。这将是开始使用 Swing 进行编程的最快最简单的方法。如果您无法这样做,仅仅阅读也应该是有用的,因为每个步骤都有截图说明。
如果您更喜欢传统的手动编程每个组件的方法(不使用 IDE 的帮助),请将这节课视为进入已经在教程其他地方提供的低级讨论的入口点。每个讨论中的超链接将带您前往相关课程,如果您希望学习这些低级细节。
该应用程序的完成 GUI 将如下所示:
CelsiusConverter 应用程序。
单击“启动”按钮以使用Java™ Web Start运行 CelsiusConverter(下载 JDK 7 或更高版本)。或者,要自行编译和运行示例,请参考示例索引。
从最终用户的角度来看,使用方法很简单:在文本框中输入温度(摄氏度),点击“转换”按钮,然后观看转换后的温度(华氏度)显示在屏幕上。最小化、最大化和关闭按钮将按预期运行,并且应用程序还将在窗口顶部显示一个标题。
从程序员的角度来看,我们将应用程序分为两个主要阶段。首先,我们将用各种 Swing 组件填充 GUI 并按照上面显示的方式排列它们。然后,我们将添加应用程序逻辑,以便当用户按下“转换”按钮时,程序实际执行转换操作。
如果你有兴趣使用 JavaFX 来创建你的 GUI,请查看JavaFX 文档和JavaFX - NetBeans Wiki。
设置 CelsiusConverter 项目
原文:
docs.oracle.com/javase/tutorial/uiswing/learn/settingup.html
如果您以前使用过 NetBeans IDE,那么本节的大部分内容看起来会很熟悉,因为最初的步骤对大多数项目都是相似的。不过,接下来的步骤描述了特定于此应用程序的设置,因此请务必仔细遵循。
步骤 1:创建一个新项目
要创建一个新项目,请启动 NetBeans IDE 并从“文件”菜单中选择“新项目”:
创建一个新项目
每个命令的键盘快捷键显示在每个菜单项的最右侧。NetBeans IDE 的外观和感觉可能在不同平台上有所不同,但功能将保持不变。
步骤 2:选择 General -> Java Application
接下来,从类别列中选择“General”,从项目列中选择“Java Application”:
*此图已经缩小以适应页面。
点击图像以查看其自然大小。*
您可能会在描述窗格中看到“J2SE”的提及;那是现在被称为“Java SE”平台的旧名称。按下标有“下一步”的按钮继续。
步骤 3:设置项目名称
现在将“CelsiusConverterProject”输入为项目名称。您可以将项目位置和项目文件夹字段保留为默认值,或者单击“浏览”按钮选择系统上的其他位置。
*此图已经缩小以适应页面。
点击图像以查看其自然大小。*
确保取消选中“创建主类”复选框;保留此选项会生成一个新类作为应用程序的主入口点,但我们的主 GUI 窗口(在下一步中创建)将担任此职责,因此不需要选中此框。完成后点击“完成”按钮。
*此图已经缩小以适应页面。
点击图像以查看其自然大小。*
当 IDE 完成加载时,您将看到类似上述的屏幕。所有窗格都将为空,除了左上角的项目窗格,显示了新创建的项目。
步骤 4:添加一个 JFrame 表单
*此图已经缩小以适应页面。
点击图像以查看其自然大小。*
现在右键点击CelsiusConverterProject
名称,选择 New -> JFrame Form(JFrame
是负责应用程序主窗体的 Swing 类)。你将在本课程后面学习如何将这个类指定为应用程序的入口点。
步骤 5:命名 GUI 类
接下来,将CelsiusConverterGUI
作为类名,learn
作为包名。实际上,你可以将这个包命名为任何你想要的名称,但在这里我们遵循教程的惯例,将包命名为所在课程的名称。
*此图已经缩小以适应页面。
点击图片查看其原始大小。*
其余字段应自动填写,如上所示。完成后点击 Finish 按钮。
*此图已经缩小以适应页面。
点击图片查看其原始大小。*
当 IDE 加载完成时,右侧窗格将显示CelsiusConverterGUI
的设计时、图形化视图。在这个屏幕上,你将可以直观地拖放和操作各种 Swing 组件。
NetBeans IDE 基础知识
原文:
docs.oracle.com/javase/tutorial/uiswing/learn/netbeansbasics.html
在探索 NetBeans IDE 的 GUI 创建功能之前,不需要学习其每个功能。实际上,您真正需要理解的只有调色板、设计区域、属性编辑器和检查器。我们将在下面讨论这些功能。
调色板
调色板包含 Swing API 提供的所有组件。即使这是您第一次使用它们(JLabel
是文本标签,JList
是下拉列表等),您也可能已经猜到许多这些组件的用途。
*此图已经缩小以适应页面。
单击图像以查看其自然大小。*
从此列表中,我们的应用程序仅使用JLabel
(基本文本标签)、JTextField
(用户输入温度)和JButton
(将温度从摄氏度转换为华氏度)。
设计区域
设计区域是您将视觉构建 GUI 的地方。它有两个视图:源视图和设计视图。设计视图是默认视图,如下所示。您可以随时通过单击它们各自的选项卡切换视图。
*此图已经缩小以适应页面。
单击图像以查看其自然大小。*
上图显示了一个JFrame
对象,由带有蓝色边框的大阴影矩形表示。IDE 自动生成常见的预期行为(例如在用户单击“关闭”按钮时退出)并显示在源代码视图中,位于称为受保护块的不可编辑蓝色代码块之间。
*此图已经缩小以适应页面。
单击图像以查看其自然大小。*
从源代码视图快速查看可以发现,IDE 创建了一个名为initComponents
的私有方法,用于初始化 GUI 的各个组件。它还告诉应用程序在关闭时“退出”,执行一些特定于布局的任务,然后将(即将添加的)组件打包在屏幕上。
不必详细了解此代码;我们在这里提到它只是为了探索源选项卡。有关这些组件的更多信息,请参见:
如何创建框架(主窗口) 和 在容器内布局组件。
属性编辑器
属性编辑器的功能如其名称所示:它允许您编辑每个组件的属性。属性编辑器易于使用;您将看到一系列行 - 每个属性一行 - 您可以单击并编辑,而无需直接输入源代码。以下图显示了新添加的JFrame
对象的属性编辑器:
*此图已缩小以适应页面。
单击图像以查看其自然大小。
上面的截图显示了此对象的各种属性,如背景颜色、前景颜色、字体和光标。
检查器
在本课程中我们将使用 NetBeans IDE 的最后一个组件是检查器:
检查器
检查器提供了应用程序组件的图形表示。我们只会使用检查器一次,将一些变量名称更改为非默认名称。
创建 CelsiusConverter GUI
原文:
docs.oracle.com/javase/tutorial/uiswing/learn/creatinggui.html
本节介绍如何使用 NetBeans IDE 创建应用程序的 GUI。当您将每个组件从工具栏拖动到设计区域时,IDE 会自动生成适当的源代码。
步骤 1:设置标题
首先,通过在检查器中单击JFrame
来将应用程序的JFrame
的标题设置为“摄氏度转换器”:
选择 JFrame
然后,使用属性编辑器设置其标题:
设置标题
您可以通过双击标题属性并直接输入新文本,或单击 按钮并在提供的字段中输入标题来设置标题。或者,作为快捷方式,您可以单击检查器中的JFrame
并直接输入其新文本,而无需使用属性编辑器。
步骤 2:添加一个 JTextField
接下来,从工具栏拖动一个JTextField
到设计区域的左上角。当接近左上角时,GUI 构建器会提供视觉线索(虚线),提示适当的间距。根据这些线索指导,将JTextField
放置在窗口的左上角,如下所示:
添加一个 JTextField
您可能会想要删除默认文本“JTextField1”,但现在就让它保持原样。稍后在本课程中,随着对每个组件的最终调整,我们将替换它。有关此组件的更多信息,请参见如何使用文本字段。
步骤 3:添加一个 JLabel
接下来,在设计区域拖动一个JLabel
。将其放置在JTextField
的右侧,再次注意视觉线索,以确定适当的间距。确保此组件的文本基线与JTextField
的文本基线对齐。IDE 提供的视觉线索应该很容易确定。
添加一个 JLabel
有关此组件的更多信息,请参见如何使用标签。
步骤 4:添加一个 JButton
接下来,从工具栏拖动一个JButton
并将其放置在JTextField
的左侧和下方。再次,视觉线索有助于将其放置在正确的位置。
添加一个 JButton
你可能会想要手动调整JButton
和JTextField
的宽度,但现在就让它们保持原样。稍后在本课程中,您将学习如何正确调整这些组件。有关此组件的更多信息,请参见如何使用按钮。
Java 中文官方教程 2022 版(十四)(3)https://developer.aliyun.com/article/1486378