深入浅出:AWT的基本组件及其应用
目录
前言
1. AWT简介
2. AWT基本组件
2.1 Button:按钮
2.2 Label:标签
编辑
2.3 TextField:文本框
2.4 Checkbox:复选框
2.5 Choice:下拉菜单
2.6 List:列表
综合案例
注意
3. AWT事件处理
3.1 常见事件监听器
4. 结束语
前言
在Java中,AWT(Abstract Window Toolkit)是最早的图形用户界面(GUI)工具包之一,它为Java开发者提供了一系列的组件,帮助我们创建图形化的界面。尽管现在Swing和JavaFX等工具包在功能上已经超越了AWT,但AWT的基本组件仍然是我们理解Java GUI编程的基础。
本篇博客将深入了解AWT中常见的基本组件,包括按钮、标签、文本框等,并结合实际代码示例展示如何在AWT中使用这些组件。
1. AWT简介
AWT(Abstract Window Toolkit)是Java提供的一个图形化界面工具包,它允许开发者构建跨平台的用户界面。AWT中所有的GUI组件都依赖于本地操作系统的窗口系统进行绘制,因此AWT组件在不同操作系统上的外观可能略有不同。
AWT的核心组件包括:
- 容器:如
Frame、Panel、Window等。 - 基本组件:如
Button、Label、TextField、Checkbox等。 - 事件处理:AWT允许开发者通过事件监听器来响应用户的操作(如点击、键盘输入等)。
2. AWT基本组件
AWT中有一些非常基础且常用的组件,这些组件是构建图形界面应用程序的基础。下面我们将介绍其中几个最常用的组件及其用法。
2.1 Button:按钮
按钮是最常见的图形界面组件,通常用于触发某些操作。
import java.awt.*;
import java.awt.event.*;public class ButtonExample {public static void main(String[] args) {Frame frame = new Frame("AWT Button Example");// 创建一个按钮Button button = new Button("Click Me");// 给按钮添加事件监听器button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button clicked!");}});// 设置按钮的位置和大小button.setBounds(100, 100, 100, 50);// 添加按钮到窗口frame.add(button);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);}
}
2.2 Label:标签
标签用于显示静态文本,常用于界面中提示用户或者显示信息。
import java.awt.*;
import java.awt.event.*;public class test {public static void main(String[] args) {Frame frame = new Frame("AWT Label Example");// 创建一个标签Label label = new Label("Hello, AWT!");// 设置标签的位置和大小label.setBounds(100, 100, 200, 30);// 添加标签到窗口frame.add(label);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}}
2.3 TextField:文本框
文本框用于接收用户输入的单行文本。
import java.awt.*;public class TextFieldExample {public static void main(String[] args) {Frame frame = new Frame("AWT TextField Example");// 创建一个文本框TextField textField = new TextField();// 设置文本框的位置和大小textField.setBounds(100, 100, 200, 30);// 添加文本框到窗口frame.add(textField);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);}
}

2.4 Checkbox:复选框
复选框允许用户在多个选项中进行选择,用户可以选择多个选项。
import java.awt.*;
import java.awt.event.*;
public class CheckboxExample {public static void main(String[] args) {Frame frame = new Frame("AWT Checkbox Example");// 创建复选框Checkbox checkbox = new Checkbox("Accept Terms");// 设置复选框的位置checkbox.setBounds(100, 100, 150, 30);// 添加复选框到窗口frame.add(checkbox);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}
}
2.5 Choice:下拉菜单
Choice组件提供一个下拉菜单,让用户可以从中选择一个选项。
package BasicComponent;import java.awt.*;public class CheckboxExample {public static void main(String[] args) {Frame frame = new Frame("AWT Choice Example");// 创建一个下拉菜单Choice choice = new Choice();choice.add("Option 1");choice.add("Option 2");choice.add("Option 3");// 设置下拉菜单的位置choice.setBounds(100, 100, 150, 30);// 添加下拉菜单到窗口frame.add(choice);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);}
}

2.6 List:列表
List组件允许用户从多个选项中选择一个或多个项目。
import java.awt.*;public class ListExample {public static void main(String[] args) {Frame frame = new Frame("AWT List Example");// 创建一个列表List list = new List();list.add("Item 1");list.add("Item 2");list.add("Item 3");// 设置列表的位置list.setBounds(100, 100, 150, 100);// 添加列表到窗口frame.add(list);// 设置窗口大小和布局frame.setSize(300, 200);frame.setLayout(null);// 显示窗口frame.setVisible(true);}
}

综合案例

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class ComponentTest {Frame fr = new Frame("基本组件测试");// 文本域TextArea ta = new TextArea(5, 20);// 下拉选择框Choice colorChoice = new Choice();CheckboxGroup cbg = new CheckboxGroup();// 复选框组件Checkbox sex1 = new Checkbox("男", cbg, true);Checkbox sex2 = new Checkbox("女", cbg, false);Checkbox ist = new Checkbox("是否已婚", false);// 单行文本框TextField tf = new TextField(20);Button ok = new Button("确定");List color = new List(6, true); // 列表框public void init() {// 组装界面color.add("red");color.add("blue");color.add("green");color.add("black");color.add("yellow");color.add("pink");colorChoice.add("red");colorChoice.add("blue");colorChoice.add("green");Box bottom = Box.createHorizontalBox();bottom.add(tf);bottom.add(ok);Box center = Box.createHorizontalBox();center.add(sex1);center.add(sex2);center.add(ist);center.add(colorChoice);// 组装文本域和选择框Box topleft = Box.createVerticalBox();topleft.add(ta);topleft.add(center);Box top = Box.createHorizontalBox();top.add(topleft);top.add(color);fr.add(top, BorderLayout.NORTH);fr.add(bottom, BorderLayout.SOUTH);//fr.setBounds(100, 100, 300, 200);fr.pack();fr.setVisible(true);// 添加窗口关闭事件监听器fr.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {ComponentTest c = new ComponentTest();c.init();}
}
注意
组件示例中的部分代码没有加窗口关闭的事件监听器。
Frame 的new 对象名.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
3. AWT事件处理
AWT允许我们通过事件监听机制来响应用户的操作,例如点击按钮、键盘输入等。事件处理是GUI编程中非常重要的一部分,通常需要实现对应的事件监听接口。
import java.awt.*;
import java.awt.event.*;public class EventHandlingExample {public static void main(String[] args) {Frame frame = new Frame("AWT Event Handling Example");Button button = new Button("Click Me");// 添加按钮的点击事件处理器button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("Button clicked!");}});button.setBounds(100, 100, 100, 50);frame.add(button);frame.setSize(300, 200);frame.setLayout(null);frame.setVisible(true);}
}
3.1 常见事件监听器
- ActionListener:用于处理按钮、文本框等组件的动作事件。
- WindowListener:用于处理窗口的各种事件,如窗口关闭、最小化等。
- KeyListener:用于处理键盘事件。
- MouseListener:用于处理鼠标事件
4. 结束语
AWT是Java中最基础的GUI工具包,它提供了许多常见的组件,如按钮、标签、文本框、复选框等,帮助开发者快速构建图形化界面。虽然AWT的外观和功能不如Swing或JavaFX丰富,但它为后续的GUI框架打下了坚实的基础。
通过本文的介绍,希望大家对AWT的基本组件有了初步的了解。如果是Java GUI开发的初学者,AWT是一个非常好的起点,掌握了AWT的使用,将能够更容易地理解Swing、JavaFX等更强大的GUI框架。
相关文章:
深入浅出:AWT的基本组件及其应用
目录 前言 1. AWT简介 2. AWT基本组件 2.1 Button:按钮 2.2 Label:标签 编辑 2.3 TextField:文本框 2.4 Checkbox:复选框 2.5 Choice:下拉菜单 2.6 List:列表 综合案例 注意 3. AWT事件处理 …...
MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结
文章目录 MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结一、引言二、临时表与内存表的区别(一)内存表(二)临时表 三、临时表的特性(一)可见性与生命周期(二)与…...
WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…...
.NET常用的ORM框架及性能优劣分析总结
市面上有很多流行的 ORM(对象关系映射)框架可以用于 .NET 开发。本文主要针对以下几种常见的 ORM 框架,对其优劣进行分析及总结,希望能够帮助大家进行ORM框架的使用有所帮助。 1. Entity Framework (EF) 特点 • 官方支持&…...
Ubuntu网络配置(桥接模式, nat模式, host主机模式)
windows上安装了vmware虚拟机, vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式;nat模式;host模式 一、桥接模式 所谓桥接模式,也就是虚拟机与宿主机处于同一个网段, 宿主机…...
光通信复习
第一章 1.5 光纤通信系统的基本组成是怎么样的?试画出简图予以说明 光纤:主要负责光信号的传输光发送器:将用户端的电信号转化为光信号,入射到光纤内部光中继器:将光纤中发生衰减和畸变的光信号变成没有衰减和畸变的原…...
数字化转型中的投资决策:IT平台投资与业务应用投资的思考
在数字化转型的大潮中,企业常常面临一个核心问题:如何在繁杂的投资决策中精准地分配资源,特别是在IT平台投资和业务应用投资之间,如何合理划分责任与投入?在一些大型企业中,尤其是华为,针对不同…...
Linux快速入门-Linux的常用命令
Linux的常用命令 1. Linux的终端与工作区1.1 终端概述1.2 切换终端 2. Shell语言解释器2.1 Shell概述 3. 用户登录与身份切换3.1 su 命令3.2 sudo 命令 4. 文件、目录操作命令4.1 pwd 命令4.2 cd 命令4.3 ls 命令4.3.1 ls 指令叠加使用 4.4 mkdir 命令4.5 rmdir 命令4.6 cp 命令…...
【ORB-SLAM3:相机针孔模型和相机K8模型】
在ORB-SLAM3中,相机的建模是 SLAM 系统的核心之一,因为它直接影响到如何处理和利用图像数据进行定位和地图构建。ORB-SLAM3 支持不同的相机模型,其中包括针孔模型和鱼眼模型(K8 模型)。下面分别介绍这两种模型。 相机…...
Python函数(十二):函数的创建和调用、参数传递、返回值
前言:在编程的世界里,函数是一种基本的构建块,它允许我们将代码封装成可重复使用的单元。在Python中,函数的使用尤为重要,因为它不仅有助于代码的模块化,还提高了代码的可读性和可维护性。本章节࿰…...
掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用
1. 介绍 Docker 是现代开发和运维的必备工具,集成了容器技术的优势。本文将记录 Docker 的常用指令,并会随着使用经验的积累进行不定期更新。 2. 常用命令 2.1 启动容器(前台交互模式) docker run --privileged --volume /hom…...
Virtualbox硬盘扩容
前言 有没有使用虚拟机安装操作系统的时候,虚拟硬盘一开始分配的虚拟硬盘空间不够用?在后期去扩容的伙伴们,下面我看看如何扩容virtualbox的虚拟硬盘? 重新分配虚拟硬盘大小 在virtualbox菜单选择【管理】-【工具】-【虚拟介质…...
10G光纤反射内存卡
在科技日新月异的今天,数据存储技术正以前所未有的速度发展,其中,“10G光纤反射内存卡”作为新一代存储技术的佼佼者,正逐步引领着数据存储领域的新风尚。本文将深入探讨这一创新产品的技术原理、性能优势、应用场景以及未来展望&…...
信创数据防泄漏中信创沙箱是什么样的安全方案
在信息化与工业化融合创新(信创)的快速发展中,企业面临着日益复杂的数据安全挑战。SDC沙盒技术以其独特的安全机制和先进的设计理念,为信创环境提供了强有力的数据保护支持。以下是SDC沙盒在信创领域支持能力的几个关键侧重点&…...
虚幻引擎结构之TArray
1.TArray 简介 TArray 是虚幻引擎提供的一个动态数组容器,用于存储相同类型的元素集合。它是一个模板类,能够容纳任意类型的数据,为用户提供了一套简便的方法来添加、删除、访问和操作数组中的元素。作为虚幻引擎的核心数据结构之一ÿ…...
【搭建一个网上商城系统】
搭建一个网上商城系统是一个复杂但有序的过程,涉及多个关键步骤。以下是一些主要的步骤: 确定运营模式 选择适合的模式:根据企业的规模、业务形态和目标市场,选择合适的电商平台运营模式,如B2C(商对客&am…...
【gopher的java学习笔记】Spring Boot Starter初探
转到java这边后,这天需要搭一个java的web service出来,如果是以前golang的话,那我就可以非常熟练的用gin搭建一个web service出来,核心逻辑就是写好一些rest接口实现后再加上最为灵魂的一句: // 启动Gin服务器在8080端…...
web服务器之云主机、物理机租用、服务器托管的区别
云主机、物理机租用和服务器托管是三种不同的Web服务器部署方式,它们各有特点,适用于不同需求的用户。以下是这三种服务的区别: 云主机(Cloud Hosting): 资源分配:基于虚拟化技术,多…...
centos制作离线安装包
目录 1.yumdownloader与repotrack怎么选择? yumdownloader --resolve repotrack 总结 2.环境准备 3.安装 1.yumdownloader与repotrack怎么选择? yumdownloader --resolve 和 repotrack 都是与 YUM(Yellowdog Updater Modified…...
论文解读——掌纹生成网络 RPG-Palm升级版PCE-Palm
该文章是2023年论文RPG-Palm的升级版 论文:PCE-Palm: Palm Crease Energy Based Two-Stage Realistic Pseudo-Palmprint Generation 作者:Jin, Jianlong and Shen, Lei and Zhang, Ruixin and Zhao, Chenglong and Jin, Ge and Zhang, Jingyun and Ding,…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

