深入浅出: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,…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...

[10-1]I2C通信协议 江协科技学习笔记(17个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...