Java AWT 教程26 Apr 2025 | 12 分钟阅读 Java AWT (Abstract Window Toolkit) 是一个用于在 Java 中开发图形用户界面 (GUI) 或基于窗口的应用程序的 API。 Java AWT 组件是平台相关的,即组件的显示方式取决于操作系统的外观。AWT 是重量级的,即其组件使用底层操作系统 (OS) 的资源。 java.awt 包提供了 AWT API 的 类,例如 TextField、Label、TextArea、RadioButton、CheckBox、Choice、List 等。 AWT 教程将帮助用户以简单易懂的步骤理解 Java GUI 编程。 为什么 AWT 是平台无关的?Java AWT 调用本地平台(操作系统)的子程序来创建 API 组件,如 TextField、ChechBox、button 等。 例如,一个带有 TextField、label 和 button 组件的 AWT GUI 在 Windows、MAC OS 和 Unix 等不同平台上看起来会有所不同。这是因为不同的平台对其本地组件有不同的外观,而 AWT 直接调用创建这些组件的本地子程序。 简单来说,AWT 应用程序在 Windows OS 上看起来像一个 Windows 应用程序,而在 MAC OS 上看起来像一个 Mac 应用程序。 Java AWT 层次结构Java AWT 类的层次结构如下所示。 ![]() 组成部分所有元素,如按钮、文本字段、滚动条等,都称为组件。在 Java AWT 中,每个组件都有相应的类,如上图所示。为了将每个组件放置在屏幕上的特定位置,我们需要将它们添加到容器中。 容器Container 是 AWT 中的一个组件,它可以包含其他组件,如 按钮、文本字段、标签等。继承 Container 类的类被称为容器,例如 Frame、Dialog 和 Panel。 它本质上是一个放置组件的屏幕,组件被放置在特定位置。因此,它包含并控制组件的布局。 注意:容器本身就是一个组件(参见上图),因此我们可以将一个容器添加到另一个容器中。容器类型Java AWT 中有四种类型的容器。
WindowWindow 是一个没有边框和菜单栏的容器。您必须使用 Frame、Dialog 或另一个 Window 来创建 Window。我们需要创建一个 Window 类的实例来创建此容器。 PanelPanel 是一个没有标题栏、边框或菜单栏的容器。它是一个通用的容器,用于容纳组件。它可以包含其他组件,如按钮、文本字段等。Panel 类的实例创建一个容器,我们可以在其中添加组件。 FrameFrame 是一个包含标题栏和边框的容器,并且可以有菜单栏。它可以包含其他组件,如按钮、文本字段、滚动条等。Frame 是开发 AWT 应用程序时最常用的容器。 Component 类的有用方法
Java AWT 示例要创建简单的 AWT 示例,您需要一个 Frame。在 AWT 中,有两种方法可以使用 Frame 创建 GUI。
通过继承实现的 AWT 示例让我们看一个 AWT 的简单示例,其中我们继承了 Frame 类。在这里,我们在 Frame 上显示 Button 组件。 AWTExample1.java 上述示例中使用了 setBounds(int x-axis, int y-axis, int width, int height) 方法,该方法设置了 awt 按钮的位置。 输出 ![]() 通过关联实现的 AWT 示例让我们看一个 AWT 的简单示例,其中我们创建了 Frame 类的实例。在这里,我们在 Frame 上创建了一个 TextField、Label 和 Button 组件。 AWTExample2.java 输出 ![]() Java 的抽象窗口工具包 (AWT) 提供了一组用于创建图形用户界面和绘制图形的类。 Java AWT 类Java AWT 标签 (Label) Label 是 Java AWT 中一个不可交互的文本显示元素。它用于在 GUI 中显示单行只读文本。标签通常用于标识其他 GUI 组件或向用户提供说明。它们可以使用 Label.LEFT、Label.CENTER 和 Label.RIGHT 等常量进行对齐。 Java AWT 按钮 (Button) Button 是一个 GUI 组件,在单击时会触发一个动作事件。它用于执行特定操作,例如提交表单或启动进程。按钮可以显示文本或图像,并且支持添加事件监听器来处理用户交互。 Java AWT 文本字段 (TextField) TextField 是 Java AWT 中的单行文本输入组件。它允许用户输入和编辑文本。TextField 支持设置初始文本、获取文本输入以及为 Enter 键按下等操作添加事件监听器。 Java AWT 复选框 (Checkbox) Checkbox 是一个可以被选中或取消选中的 GUI 组件。它用于用户可以独立选择或取消选择某个项目的选项。Checkbox 可以使用 CheckboxGroup 进行分组,以便一次只能从组中选择一项。 Java AWT 复选框组 (CheckboxGroup) CheckboxGroup 用于对一组 Checkbox 进行分组,以便一次只能选中一个 Checkbox。这对于呈现一组互斥选项非常有用,类似于单选按钮。一组中的任何一个 Checkbox 在任何给定时间只能被选中。 Java AWT 选择框 (Choice) Choice 是一个下拉列表,允许用户从预定义的选项列表中选择一个项目。它有助于在 GUI 中紧凑地呈现多个选择。Choice 组件易于集成和管理,提供了一种从列表中选择的简单方法。 Java AWT 列表 (List) List 组件显示一个项目列表,允许用户从列表中选择一个或多个项目。它可以配置为支持单个或多个选择。List 有助于在可滚动区域中显示多个可选项。 Java AWT 画布 (Canvas) Canvas 是一个空白的矩形区域,可以在其中绘制自定义图形。它是 Component 的子类,并提供了一个用于绘制形状、图像或处理自定义渲染的表面。开发人员通过覆盖 paint 方法来定义自定义绘制逻辑。 AWT 滚动条 滚动条(Scrollbar)是一个组件,它通过在轨道上滑动一个旋钮来使用户能够从一个范围内选择一个值。它可以水平或垂直定向,并有助于浏览大型内容区域或动态调整值。 Java AWT 菜单项 (MenuItem) 和菜单 (Menu)MenuItem 和 Menu 用于在 GUI 中创建分层下拉菜单。MenuItem 代表单个菜单选项,而 Menu 将相关项分组在一起。它们被添加到 MenuBar 中,以在应用程序中提供结构化的导航和操作。 Java AWT 弹出菜单 (PopupMenu) PopupMenu 是一个上下文菜单,在用户交互(通常是右键单击)时出现。它提供了一个操作列表,这些操作与交互的上下文相关。PopupMenu 有助于提供上下文相关的选项,而不会使主界面显得混乱。 Java AWT 面板 (Panel) Panel 是一个容器,用于将其他组件分组在一起。它用于组织和管理多个 GUI 元素的布局。Panel 可以包含其他 Panel,从而实现复杂的嵌套布局和更好的界面组件组织。 Java AWT 工具包 (Toolkit) Toolkit 类是一个抽象的超类,它提供了一个平台无关的接口来与 AWT 的各种资源和功能进行交互。它包括获取屏幕分辨率、图像处理和其他支持 GUI 操作的系统级服务的类。 Java AWT 中的事件处理事件处理是构建交互式 Java 应用程序的基本方面,尤其是在使用抽象窗口工具包 (AWT) 创建图形用户界面 (GUI) 时。在 Java AWT 中,事件由用户交互生成,例如鼠标单击、按键和窗口操作。为了响应这些事件,Java 提供了一个强大的事件处理机制,其中包括各种监听器接口和事件类。 监听器是“监听”特定类型事件并处理它们的对象的集合。Java AWT 中的每个监听器接口都定义了一个或多个与特定事件对应的方法。通过实现这些接口并重写它们的方法,开发人员可以为不同的用户操作定义自定义行为。以下是 Java AWT 中一些关键的事件处理组件: Java ActionListener ActionListener 用于处理动作事件,例如按钮单击。当发生动作时,将调用 actionPerformed(ActionEvent e) 方法。 Java MouseListener MouseListener 处理鼠标事件,包括单击、按下、释放、进入和退出。它提供了 mouseClicked(MouseEvent e)、mousePressed(MouseEvent e)、mouseReleased(MouseEvent e)、mouseEntered(MouseEvent e) 和 mouseExited(MouseEvent e) 等方法。 Java MouseMotionListener MouseMotionListener 处理鼠标移动事件,例如鼠标移动和拖动。它包括 mouseMoved(MouseEvent e) 和 mouseDragged(MouseEvent e) 方法。 Java ItemListener ItemListener 处理 Checkbox 和 Choice 列表等组件的项事件。它包含 itemStateChanged(ItemEvent e) 方法,当项的状态发生更改时调用该方法。 Java KeyListener KeyListener 处理键盘事件。它提供了 keyTyped(KeyEvent e)、keyPressed(KeyEvent e) 和 keyReleased(KeyEvent e) 方法来响应键盘输入。 Java WindowListener WindowListener 处理窗口事件,例如打开、关闭、激活、停用等。它包括 windowOpened(WindowEvent e)、windowClosing(WindowEvent e)、windowClosed(WindowEvent e)、windowIconified(WindowEvent e)、windowDeiconified(WindowEvent e)、windowActivated(WindowEvent e) 和 windowDeactivated(WindowEvent e) 等方法。 关闭 AWT 窗口 要处理 AWT 窗口的关闭,您通常需要实现 WindowListener 接口中的 windowClosing(WindowEvent e) 方法,在该方法中您可以调用 System.exit(0) 来终止应用程序。 Java AWT 的优点
Java AWT 的缺点
Java AWT 选择题1. 关于 Frame 和 Dialog 在 Java AWT 中的区别,以下哪个说法是正确的?
答案:C 解释:在 Java AWT 中,Frame 是一个具有标题栏、边框和菜单栏的顶层容器,可以承载按钮和文本字段等组件。它可以是模态的(阻止对其他窗口的输入)和非模态的(同时允许对其他窗口的输入)。另一方面,Dialog 是一个模态的顶层容器,在关闭之前总是阻止对其他窗口的输入。 2. 在 Java AWT 中,以下哪个布局管理器最适合创建组件网格?
答案:B 解释:Java AWT 中的 GridLayout 以行和列的网格形式排列组件。它确保所有组件大小相等,并以网格状方式填充容器。此布局管理器非常适合创建表单或需要均匀间隔组件的网格。 3. Java AWT 组件的 repaint() 方法的主要目的是什么?
答案:C 解释:在 Java AWT 中,repaint() 方法用于请求重新绘制组件。它不会立即重绘组件,而是通过调用其 update() 和 paint() 方法来安排重绘。这对于响应用户输入或数据更改来更新组件的外观至关重要。 4. 在 Java AWT 中,以下哪个容器通常用于分组组件并根据特定布局组织它们?
答案:C 解释:Java AWT 中的 Panel 是一个通用的容器,没有标题栏、边框或菜单栏。它通常用作轻量级容器,用于容纳和组织按钮、文本字段和标签等组件。Panel 可以添加到其他容器(如 Frame 或 Dialog)中,以定义用于使用 FlowLayout 或 GridLayout 等布局管理器排列组件的特定区域。 5. Component 类在 Java AWT 中用于设置组件背景颜色的方法是哪个?
答案:B 解释:在 Java AWT 中,Component 类的 setBackground(Color c) 方法用于将组件的背景颜色设置为指定的颜色 c。它允许开发人员根据应用程序的需求更改组件的背景颜色来定制组件的外观。 下一主题Java AWT 组件 |
我们请求您订阅我们的新闻通讯以获取最新更新。