JAVA 图形界面编程 AWT篇(1)

前言

为了应对JAVA课设,小编走上了java的图形界面编程的道路,通过博客分享自己的学习历程,并进行笔记的记录。

AWT(Abstract Window Toolkit)介绍

AWT(抽象窗口工具包)是 Java 最早的图形用户界面(GUI)框架之一,主要用于构建桌面应用程序的图形界面。最初在 JDK 1.0 版本中作为 Java GUI 的核心库引入,旨在提供一个跨平台的图形用户界面工具包。

AWT 的最大特点是 平台依赖性 ,即它依赖于底层操作系统的窗口系统来创建和渲染界面组件。由于这一点,AWT 的组件在不同操作系统上可能表现出不同的外观和行为。

后续我们将介绍基于纯JAVA实现的swing、

尽管如此,AWT 仍然是 Java 图形界面编程的重要部分,尤其是在较老的 Java 应用程序中。

AWT 主要特性

  1. 基于操作系统的原生组件 : AWT 中的组件是 重量级组件 (heavyweight components),即它们直接依赖于底层操作系统的窗口系统(如 Windows 或 X11)。这导致 AWT 的外观和行为通常会随平台的不同而有所不同。

  2. 事件驱动模型 : AWT 使用事件驱动编程模型来响应用户的输入。开发者通过事件监听器处理鼠标、键盘等输入事件。这一机制使得 AWT 能够提供交互式的界面。

  3. 跨平台 : AWT 提供了跨平台的图形界面组件,但由于它依赖于底层操作系统的窗口组件,所以它的表现和外观会受到操作系统的影响。

  4. 简单的布局管理器 : AWT 提供了多种布局管理器(如 FlowLayoutBorderLayoutGridLayout),用于帮助开发者控制组件在容器中的布局。

  5. 低级图形支持 : AWT 提供了对基本图形(如线条、矩形、圆形、文本)的支持,开发者可以在窗口中绘制简单的图形。

AWT 继承体系

AWT 的继承体系可以从几个核心类开始理解,主要的类包括 ComponentContainerWindow 等,这些类通过继承关系形成了 AWT 组件的层次结构。

AWT 继承体系结构图

```
                                Object
                                  |
                              java.awt.Component
                              /        |         \
                        java.awt.Container  java.awt.Window
                                |
                        java.awt.Frame
                                |
                        java.awt.Panel

```

1. Object

  • 所有 Java 类的祖先类。

2. java.awt.Component

  • Component 是 AWT 类库中所有图形组件的基类,几乎所有的图形组件(如按钮、文本框、标签等)都直接或间接地继承自 Component 类。
  • Component 类提供了处理图形组件的位置、大小、绘制、事件等功能。
  • 关键方法:
* **`setSize(int width, int height)`:设置组件的大小。**
* **`setLocation(int x, int y)`:设置组件的位置。**
* **`paint(Graphics g)`:重绘组件的方法,通常用于自定义组件的外观。**
* **`addActionListener(ActionListener listener)`:添加事件监听器。**

3. java.awt.Container

  • Container 类是 Component 的子类,表示可以包含其他组件的容器。它本身不能单独显示,但可以用来容纳其他组件(如 ButtonLabel 等)。容器本身不直接显示内容,而是管理其他组件的布局。
  • 容器类主要用于管理和显示多个子组件。
  • 关键方法:
    • add(Component comp):将组件添加到容器中。
    • setLayout(LayoutManager mgr):设置容器的布局管理器。
  • 常见的容器类
    • Frame:代表一个应用程序的主窗口,通常包含标题栏和菜单栏。
    • Panel:面板,允许将多个组件组合成一个区域。
    • Dialog:对话框,通常用于显示消息或获取用户输入。
    • ScrollPane:具有滚动条的容器。

4. java.awt.Window

  • Window 类是 Component 的直接子类,它表示一个顶级窗口或对话框。在 AWT 中,所有的顶级窗口(如 FrameDialog)都继承自 Window 类。
  • 关键方法:
    • setVisible(boolean b):控制窗口的可见性。
    • setSize(int width, int height):设置窗口的大小。
    • setLocation(int x, int y):设置窗口的位置。
  • 常见的Window 类子类
    • Frame:代表一个具有边框和标题的主窗口。
    • Dialog:代表一个弹出式对话框窗口。

5. java.awt.Frame

  • FrameWindow 类的一个子类,表示一个具有边框和标题栏的窗口。它通常是一个应用程序的主窗口。
  • Frame 类提供了用于管理应用窗口的各种功能,如关闭窗口、设置大小、设置菜单等。
  • 关键方法:
* `setTitle(String title)`:设置窗口的标题。
* `setMenuBar(MenuBar mb)`:设置窗口的菜单栏。
* `addWindowListener(WindowListener listener)`:添加窗口事件监听器。

6. java.awt.Panel

  • PanelContainer 的一个子类,表示一个没有边框的面板,通常用于容纳多个组件。面板常用于组织窗口中的布局和设计。
  • 它允许对组件进行布局,并且是一个容器,通常用于构建更复杂的用户界面。
  • 关键方法:
    • setLayout(LayoutManager mgr):设置面板的布局管理器。

AWT 组件的继承体系总结

  • 所有 AWT 组件最终都继承自 java.awt.Component
  • 容器 是继承自 Container 类的,容器负责管理和布局其中的组件。
  • 顶级窗口 (如 FrameDialog)继承自 Window 类,它们都是 Component 的直接或间接子类。
  • 通过继承关系,开发者可以自定义自己的 GUI 组件,继承 ComponentContainer 类,并在其中实现自定义的绘制或布局功能。

AWT 组件

AWT 包括多种用于构建 GUI 的组件(如按钮、文本框、标签等)。这些组件在 AWT 中都是类的实例,通常需要添加到容器(如 FramePanel)中。

1. 顶级容器
  • Frame :代表应用程序的主窗口。一个应用程序通常只有一个 Frame
  • Dialog :表示一个对话框窗口,用于显示提示或接受用户输入。
  • FileDialog :用于文件选择的对话框。
  • Window :一个顶级窗口的类,可以用于创建无边框的窗口。
2. 组件
  • Button :按钮组件。
  • Label :标签组件,用于显示文本。
  • TextField :文本输入框,用于单行文本输入。
  • TextArea :文本区域,用于多行文本输入。
  • CheckBox :复选框,用于选择项。
  • RadioButton :单选按钮,用于在多个选项中选择一个。
  • List :列表组件,用于显示项目的列表。
  • Choice :下拉列表框。
  • Scrollbar :滚动条组件。
  • MenuMenuItem :菜单及菜单项组件。
3. 布局管理器
  • FlowLayout :组件按顺序排列,默认从左到右排列。
  • BorderLayout :将容器分为五个区域:北(NORTH)、南(SOUTH)、东(EAST)、西(WEST)、中(CENTER)。
  • GridLayout :以网格的方式排列组件,所有单元格大小相同。
  • CardLayout :类似卡片的布局,允许容器中显示一个组件的“卡片”。
  • GridBagLayout :更灵活的网格布局,可以调整组件的大小和位置。
4. 事件模型
  • ActionListener :响应按钮、菜单等可触发动作的组件。
  • MouseListener :响应鼠标事件。
  • KeyListener :响应键盘事件。
  • WindowListener :响应窗口的打开、关闭、激活等事件。
  • ItemListener :响应复选框、单选按钮等的状态改变。

一个简单的程序

```java
import java.awt.*;
import java.awt.event.*;

public class SimpleAWTApp {
    public static void main(String[] args) {
        // 创建一个 Frame 对象
        Frame frame = new Frame("AWT 示例");

        // 创建按钮并设置点击事件
        Button button = new Button("点击我");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("按钮被点击");
            }
        });

        // 创建文本框
        TextField textField = new TextField("请输入文本");

        // 设置布局管理器为 FlowLayout
        frame.setLayout(new FlowLayout());

        // 将组件添加到 frame 中
        frame.add(button);
        frame.add(textField);

        // 设置 frame 大小
        frame.setSize(300, 200);

        // 设置关闭操作
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        // 显示 frame
        frame.setVisible(true);
    }
}

```

结束语

下节开始我们将对相关组件进行介绍!!!

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4808.html

(0)
LomuLomu
上一篇 2024 年 12 月 29 日 上午2:04
下一篇 2024 年 12 月 30 日 上午1:42

相关推荐

  • PostgreSQL 初始化配置设置

    title: PostgreSQL 初始化配置设置date: 2024/12/27updated: 2024/12/27author: cmdragon excerpt:PostgreSQL是一款广泛应用于企业级应用、数据仓库以及Web应用程序的强大数据库管理系统。在完成数据库的安装后,进行合理而有效的初始配置是确保数据库性能和安全性的关键步骤。Postgr…

    2024 年 12 月 31 日
    21300
  • 新版 Cursor 把其他 AI 编程工具按在地上摩擦了!

    大家好,我是汤师爷~ AI编程助手Cursor背后的Anysphere公司刚刚完成了1亿美元的B轮融资,估值直接飙升至26亿美元。 四个月前,这家公司刚拿下6000万美元,估值还只有4亿美元。如今,增长6.5倍,这速度,简直让人怀疑开挂了。 Anysphere不仅融资拿到手软,收入增长更是逆天。 公司从4月的年收入400万美元,短短六个月后,10月的月收入竟…

    2025 年 1 月 16 日
    25900
  • WxPython跨平台开发框架之列表数据的通用打印处理

    在WxPython跨平台开发框架中,我们大多数情况下,数据记录通过wx.Grid的数据表格进行展示,其中表格的数据记录的显示和相关处理,通过在基类窗体 BaseListFrame 进行统一的处理,因此对于常规的数据记录打印,我们也可以在其中集成相关的打印处理,本篇随笔介绍如何利用WxPython内置的打印数据组件实现列表数据的自定义打印处理,以及对记录进行分…

    2024 年 12 月 30 日
    24700
  • Microi 吾码与 JavaScript:前端低代码平台的强大组合

    目录 一、引言 二、Microi 吾码概述 三、JavaScript 在 Microi 吾码前端开发中的应用 (一)前端 V8 引擎与 JavaScript (二)接口引擎与 JavaScript 四、JavaScript 在 Microi 吾码后端开发中的协同 (一)与 C# 后端框架的交互 (二)利用 gRPC 实现跨语言通信 五、Microi 吾码中 …

    2025 年 1 月 1 日
    30300
  • PyCharm最新2024永久激活码,PyCharm破解教程(Pycharm插件推荐)

    PyCharm是JetBrains公司开发的一款广受欢迎的Python集成开发环境(IDE),以其强大的功能和智能化的操作界面受到广大Python开发者的青睐。 给大家整理了PyCharm永久激活码,PyCharm破解教程,需要的直接浏览器访问: docs.qq.com/doc/DWHB5YUV6UVRWd0ZR PyCharm不仅内置了丰富的功能,还支持各…

    未分类 2024 年 7 月 31 日
    2.3K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信