深入浅出: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开发者提供了一系列的组件,帮助我们创建图形化的界面。尽管现在SwingJavaFX等工具包在功能上已经超越了AWT,但AWT的基本组件仍然是我们理解Java GUI编程的基础。

本篇博客将深入了解AWT中常见的基本组件,包括按钮、标签、文本框等,并结合实际代码示例展示如何在AWT中使用这些组件。

1. AWT简介

AWT(Abstract Window Toolkit)是Java提供的一个图形化界面工具包,它允许开发者构建跨平台的用户界面。AWT中所有的GUI组件都依赖于本地操作系统的窗口系统进行绘制,因此AWT组件在不同操作系统上的外观可能略有不同。

AWT的核心组件包括:

  • 容器:如FramePanelWindow等。
  • 基本组件:如ButtonLabelTextFieldCheckbox等。
  • 事件处理: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() {
                @Override
                public 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() {
            @Override
            public 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框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943122.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go Energy 跨平台框架 v2.5.1 发布

Energy 框架 是Go语言基于CEF 和 LCL 开发的跨平台 GUI 框架, 具体丰富的系统原生 UI 控件集, 丰富的 CEF 功能 API,简化且不失功能的 CEF 功能 API 使用。 特性? 特性描述跨平台支持 Windows, macOS, Linux简单Go语言的简单特性,使用简单…

JS 异步 ( 一、异步概念、Web worker 基本使用 )

文章目录 异步代码异步执行概念ES6 之前的异步 Web worker 异步 代码异步执行概念 通常代码是自上而下同步执行的,既后面的代码必须等待前面的代码执行完才会执行,而异步执行则是将主线程中的某段代码交由子线程去执行,当交给子线程后&…

机器学习(二)-简单线性回归

文章目录 1. 简单线性回归理论2. python通过简单线性回归预测房价2.1 预测数据2.2导入标准库2.3 导入数据2.4 划分数据集2.5 导入线性回归模块2.6 对测试集进行预测2.7 计算均方误差 J2.8 计算参数 w0、w12.9 可视化训练集拟合结果2.10 可视化测试集拟合结果2.11 保存模型2.12 …

Java字符串操作利器:StringBuffer与StringBuilder类详解

在处理字符串变更时,StringBuffer和StringBuilder类是优选工具。与String类不同,StringBuffer和StringBuilder允许对象被多次修改,而不会生成新的未使用对象。 StringBuilder类自Java 5起引入,其与StringBuffer的主要区别在于Stri…

软件确认测试报告的内容和作用简析

软件确认测试报告是对软件确认测试过程及结果的正式记录,是评估软件质量的重要依据。它不仅对开发团队起到反馈作用,更是决策层判断软件是否可以交付的重要参考。 一、软件确认测试报告包括的内容   1、测试目的:明确此次测试的目的和所要…

结构体(初阶)

结构体: 结构体类型的声明 结构体初始化 结构成员访问 结构体传参 1.结构体的声明 1.1结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明 struct tag { member - list; }variable-lis…

详解VHDL如何编写Testbench

1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…

React 第二十节 useRef 用途使用技巧注意事项详解

简述 useRef 用于操作不需要在视图上渲染的属性数据,用于访问真实的DOM节点,或者React组件的实例对象,允许直接操作DOM元素或者是组件; 写法 const inpRef useRef(params)参数: useRef(params),接收的 …

SQL子查询和having实例

有2个表如下;一个是站点信息,一个是站点不同时间的访问量, 现在要获取总访问量大于200的网站; 先执行如下sql,不包括having子句看一下,获得的是所有站点的总访问量; 这应是一个子查询&#xf…

【seatunnel】数据同步软件安装

【seatunnel】数据同步软件安装 下载 wget https://dlcdn.apache.org/seatunnel/2.3.8/apache-seatunnel-2.3.8-bin.tar.gz wget https://dlcdn.apache.org/seatunnel/seatunnel-web/1.0.2/apache-seatunnel-web-1.0.2-bin.tar.gz1、安装seatunnel Server 解压 tar zxvf ap…

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真,并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中,干涉条纹可认为是源…

如何通过采购管理系统实现智能化采购?

随着人工智能、大数据等技术的快速发展,采购管理逐步迈入智能化时代。智能化采购不仅提升了效率,还为企业提供了更精准的采购决策支持。本文将从智能化采购的优势出发,探讨采购管理系统如何助力企业实现这一目标。 文中用到的采购管理系统&a…

【论文阅读笔记】IC-Light

SCALING IN-THE-WILD TRAINING FOR DIFFUSION-BASED ILLUMINATION HARMONIZATION AND EDITING BY IMPOSING CONSISTENT LIGHT TRANSPORT 通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练 前言摘要引言相关工作基于学习的基于扩散模型的外观和光照操纵光…

594: Maximum Tape Utilization Ratio

解法&#xff1a; 对于该题有以下错误&#xff08;敬希评论区指正 1.dp定义在全局会wa struct node {int count; // 当前容量下能够存储的程序数量int sum; // 当前容量下所占用的磁带长度vector<int> path; // 当前容量下选择的程序的路径&#xff08;存放的程序…

流量主微信小程序工具类去水印

工具类微信小程序流量主带后台管理&#xff0c;可开通广告&#xff0c;带自有后台管理&#xff0c;不借助第三方接口 介绍 支持抖音&#xff0c;小红书&#xff0c;哔哩哔哩视频水印去除&#xff0c;功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能&#xff0c…

04软件测试需求分析案例-用户登录

通读文档&#xff0c;提取信息&#xff0c;提出问题&#xff0c;整理为需求。 从需求规格说明、设计说明、配置说明等文档获取原始需求&#xff0c;通读原始需求&#xff0c;分析有哪些功能&#xff0c;每种功能要完成什么业务&#xff0c;业务该如何实现&#xff0c;业务逻辑…

DX12 快速教程(2) —— 渲染天蓝色窗口

快速导航 新建项目 "002-DrawSkyblueWindow"DirectX 12 入门1. COM 技术&#xff1a;DirectX 的中流砥柱什么是 COM 技术COM 智能指针 2.创建 D3D12 调试层设备&#xff1a;CreateDebugDevice什么是调试层如何创建并使用调试层 3.创建 D3D12 设备&#xff1a;CreateD…

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天&#xff0c;p116-p120 总结&#xff0c;总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如&#xff1a;16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful i…

【蓝桥杯每日一题】12.18

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x 从今天开始&#xff0c;笨狐狸&#xff0c;啊呸&#xff0c;本狐狸要开始漫长的蓝桥杯备战啦&#xff0c;将会长期更新每日一题这个专栏&#xff0c;直到蓝桥杯结束&#xff0c;各位一起…

Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印

图样&#xff1a; 就可以导入了 上代码 import tkinter as tk from tkinter import ttk import sqlite3 from datetime import datetime from tkinter import messagebox, filedialog import pandas as pd import reclass OrderSystem:def __init__(self, root):self.root r…