当前位置:首页 » 《我的小黑屋》 » 正文

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

14 人参与  2024年12月26日 10:01  分类 : 《我的小黑屋》  评论

点击全文阅读


前言

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

AWT(Abstract Window Toolkit)介绍

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

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

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

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

AWT 主要特性

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

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

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

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

低级图形支持: 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:代表应用程序的主窗口。一个应用程序通常只有一个 FrameDialog:表示一个对话框窗口,用于显示提示或接受用户输入。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:响应复选框、单选按钮等的状态改变。

一个简单的程序

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);    }}

结束语

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


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/207039.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 小说江诗云路明哲小说已更新+番外篇章(年少的爱终将散去)纯净阅读
  • 真千金伪装大学生在自家公司实习让狗爬后一口气看完_宋氏小林小姑娘高分神作_小说后续在线阅读_无删减免费完结_
  • 萧逸尘,楚璃,叶紫嫣爱恨决绝,此生不见番外(爱恨决绝,此生不见)TXT+后续+结局在线阅读
  • 假千金要交换人生?我抱着空间做首富爽文_苏木青赵景城虐心反转_小说后续在线阅读_无删减免费完结_
  • 温时雨谢远之续集(清风难渡无缘人)全本完整免费版_起点章节+后续(温时雨谢远之)
  • 订婚两个月后,未婚夫要摆脱包办婚姻精心打造_肖明宝宝宾客故事会_小说后续在线阅读_无删减免费完结_
  • 霍景琛,苏晚,林深昔年请深如海,终不敌薄凉附加(霍景琛,苏晚,林深)(昔年请深如海,终不敌薄凉)全本浏览阅读连载中
  • 新章速递汤安甯,白子奕,汤贝贝是什么小说(结婚十年,回归家庭的老婆在外有二胎了)完本阅读无广告(结婚十年,回归家庭的老婆在外有二胎了)
  • 娇牛马导师偷我论文99篇成功升博导,我让他牢底坐穿精校文本_周老师师姐师兄爽文_小说后续在线阅读_无删减免费完结_
  • 独家顾宇,罗薇:结局+番外精编之作(资助生装阔气,我可不参加)电子书畅享阅读
  • 宗门全员重生,小师妹摆烂不干了(君拂君芙蓉)_宗门全员重生,小师妹摆烂不干了
  • 成了高考状元后,我倒欠两百万完结txt_阿姨叶青江安TOP10_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1