Java基础_15 | Java中的图形用户界面包AWT使用详解

article/2025/8/19 18:07:16

1. Java中的AWT包

在Java中, AWT(Abstract Window Toolkit)是用来处理图形最基本的方式,它可以用来创建Java的图形用户界面程序,

AWT包提供:

  • 图形界面组件:如:窗口、按钮、菜单等
  • 容器 :是GUI元素的容器,实现组件管理、布局管理
  • 布局管理器:用来安排图形界面组件的位置
  • Graphics:在组件上进行图形绘制所使用的图形环境的父类
  • 事件处理对象:用来处理图形界面组件所触发的事件

使用:

//引入AWT包中的所有类
import java.awt.*;

2. 创建窗体

使用Frame类可以创建一个带有标题和边框的顶层窗口,创建一个窗体的基本方法如下:

  • ① 构造窗体对象
  • ② 设置窗体外观属性
  • ③ 设置窗体可见

构造窗体对象

Frame类常用的构造方法有两个:

Frame();	//构建了一个新的实例 Frame最初是无形的。 
Frame(String title);	//构建一个新 Frame最初无形对象的指定标题

修改窗体外观

修改窗体外观属性的方法主要有:

void setTitle(String title); 			//设置窗口中标题栏的文字。
void setResizable(boolean resizable);	// 设置用户是否可以改变框架大小
void dispose();							//关闭窗口,并回收该窗口的所有资源
void setLocation(int x, int y);			//设置组件位置
void setSize(int width, int height);	//设置组件的大小
void setBackground(Color bgColor);		//设置此窗口的背景颜色 
void setBounds(int x, int y, int width, int height);	//重新调整组件的位置和大小

设置窗体可见

窗体默认是不可见的,在设置完窗体外观属性后,设置窗体可见的方法如下:

void setVisible(boolean b);

示例代码如下:

import java.awt.*;public class AWTDemo01 {public static void main(String[] args) {Frame mFrame = new Frame("Hello World");mFrame.setLocation(500,500);mFrame.setSize(300,200);mFrame.setBackground(Color.darkGray);mFrame.setVisible(true);}
}

运行之后的窗体如下:

此时窗体没有添加事件处理代码,所以不能直接关闭,需要强制关闭!

3. 添加组件

AWT包中提供了如下常用组件:

  • 标签(Label类)
  • 按钮(Button)
  • 单行文本(TextField)
  • 多行文本(TextArea)
  • 单选框(CheckboxGroup)
  • 复选框(Checkbox)
  • 下拉菜单(Choice)
  • 对话框(Dialog)
  • 文件对话框(FileDialog)

示例代码如下:

import java.awt.*;public class AWTDemo01 {public static void main(String[] args) {Frame mFrame = new Frame("Hello World");mFrame.setLocation(500,500);mFrame.setSize(300,200);//向窗体中添加一个按钮Button btn1 = new Button("Click me");mFrame.add(btn1);mFrame.setVisible(true);}
}

运行之后效果如下,可以看到,默认添加进去的按钮会充满整个窗体的界面:

4. 容器和布局管理器的使用

容器

容器是图形用户界面中可以容纳其他组件的特殊组件,一个容器中可以容纳一个或多个组件,还可以容纳别的容器,窗体就是一个典型的容器。

容器类(Container类)是从Component类派生来的,另外还有一些派生的典型容器包括: Panel,ScrollPane,Window, Frame等。

Panel是在图形界面绘制中最常用的容器,它的构造方法如下:

Panel() ;		//使用默认布局管理器创建一个新面板。  
Panel(LayoutManager layout) ;		//创建一个新的面板与指定的布局管理器。  

设置容器外观属性的方法和设置窗体的方法类似,示例代码如下:

import java.awt.*;public class AWTDemo01 {public static void main(String[] args) {Frame mFrame = new Frame("Hello World");mFrame.setLocation(500,500);mFrame.setSize(300,200);Panel pn1 = new Panel();Panel pn2 = new Panel();Panel pn3 = new Panel();Panel pn4 = new Panel();pn1.setBackground(Color.blue);pn2.setBackground(Color.cyan);pn3.setBackground(Color.pink);pn4.setBackground(Color.magenta);pn1.setBounds(0,0,150,100);pn2.setBounds(150,0,150,100);pn3.setBounds(0, 100,150,100);pn4.setBounds(150,100,150,100);mFrame.add(pn1);mFrame.add(pn2);mFrame.add(pn3);mFrame.add(pn4);mFrame.setVisible(true);}
}

运行结果如下:

布局管理器(重点)

Java.awt包中共定义了5种布局类,每种布局都对应一种布局,分别是:

  • FlowLayout
  • BorderLayout
  • CardLayout
  • GridLayout
  • GridBagLayout

FlowLayout(流式布局)

布局规则:将容器中的组件按照加入的先后顺序从左向右排列,如果一行排满转下一行继续,每行均采取居中排列。

示例代码:

import java.awt.*;public class AWTDemo02 {public static void main(String[] args) {Frame mFrame = new Frame("FlowLayoutTest");mFrame.setLocation(500,500);mFrame.setSize(300,200);Panel buttonPanel=new Panel();for(int i = 0; i < 20; i++) {Button btn = new Button("btn"+i);buttonPanel.add(btn);}mFrame.add(buttonPanel);mFrame.setVisible(true);}
}

运行效果如下:

BorderLayout(边界式布局)

布局规则:把容器内的空间划分为东、西、南、北、中5个区域分别用英文的East、 West、 South、 North、Center表示,向容器中加入每个组件都要指明在容器的区域。

示例代码:

import java.awt.*;public class AWTDemo03 {public static void main(String[] args) {Frame mFrame = new Frame("BorderLayoutTest");mFrame.setLocation(500,500);mFrame.setSize(500,500);Panel testPanel=new Panel();//设置布局管理器testPanel.setLayout(new BorderLayout());Button btnCenter = new Button("Center");Button btnEast = new Button("East");Button btnWest = new Button("West");Button btnSouth = new Button("South");Button btnNorth = new Button("North");testPanel.add(btnCenter, "Center");testPanel.add(btnEast,"East");testPanel.add(btnWest,"West");testPanel.add(btnSouth, "South");testPanel.add(btnNorth, "North");mFrame.add(testPanel);mFrame.setVisible(true);}
}

演示效果如下:

CardLayout(卡片式布局)

布局规则:使用CardLayout的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,就像一叠“扑克牌”每次只能显示最上面一张一样,这个被显示的组件将占据所有的容器空间,依次排序。

示例代码:

import java.awt.*;public class AWTDemo04 {public static void main(String[] args) {Frame mFrame = new Frame("CardLayoutTest");mFrame.setLocation(500,500);mFrame.setSize(300,200);Panel pnCard = new Panel();//设置布局管理器pnCard.setLayout(new CardLayout());Button btn1 = new Button("btn1");Button btn2 = new Button("btn1");Button btn3 = new Button("btn2");pnCard.add(btn1);pnCard.add(btn2);pnCard.add(btn3);Panel pnBtn = new Panel();Button btnNext = new Button("Next");Button btnPrev = new Button("Prev");pnBtn.add(btnNext);pnBtn.add(btnPrev);mFrame.add(pnCard,"Center");mFrame.add(pnBtn,"South");mFrame.setVisible(true);}
}

效果如下:

GridLayout(方格式布局)

布局规则:把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。

示例代码:

import java.awt.*;public class AWTDemo05 {public static void main(String[] args) {Frame mFrame = new Frame("GridLayoutTest");mFrame.setLocation(500,500);mFrame.setSize(300,200);Panel buttonPanel=new Panel();//设置布局管理器,重点buttonPanel.setLayout(new GridLayout(4,5));for(int i = 0; i < 20; i++) {Button btn = new Button("btn"+i);buttonPanel.add(btn);}mFrame.add(buttonPanel);mFrame.setVisible(true);}
}

效果如下:

GridBagLayout

布局规则:使用行(列)型盒式布局的容器将组件排列在一行(列),组件按加入的先后顺序从左(上)向右(下)排列,容器的两端是剩余的空间。

示例代码如下:

import java.awt.*;public class AWTDemo05 {public static void main(String[] args) {Frame mFrame = new Frame("GridLayoutTest");mFrame.setLocation(500,500);mFrame.setSize(300,200);Panel panel1=new Panel();//设置布局管理器panel1.setLayout(new GridBagLayout());GridBagConstraints panel2 =new GridBagConstraints();panel2.fill=GridBagConstraints.BOTH;panel2.weightx=1;panel2.weighty=1;panel2.gridwidth=2;panel2.gridx=0;panel1.add(new Button("No.1"),panel2);panel2.gridx=2;panel2.gridwidth=1;panel2.gridheight=2;panel1.add(new Button("No.2"),panel2);panel2.gridx=0;panel2.gridheight=1;panel1.add(new Button("No.3"),panel2);panel2.gridx=1;panel1.add(new Button("No.4"),panel2);mFrame.add(panel1);mFrame.setVisible(true);}
}

效果如下:

5. Java中的事件处理机制

为什么需要事件处理机制

  • 程序执行效率高
  • 架构清晰明了
  • Java虚拟机自动监测事件和调用处理函数,程序员只需要关心会发生哪些事件?如何处理这些事件即可。

Java中的事件处理机制

Java中的事件处理机制架构如图所示:

  • 事件源(EventSource) :人机交互中事件的来源,通常是Java图形包中组件;
  • 事件(ActionEvent):事件源产生的交互内容,通常是在 java.awt.event包中定义的类;
  • 事件监听器(ActionListener):接收事件并进行处理, 由程序员编写,对应处理所监听事件源产生的事件;
  • 监听器接口:编写“事件监听器”的“规定” (抽象方法),必须在监听器类中实现这些方法完成事件处理;
  • 监听器注册:将事件监听器对象绑定到事件源,进行监听;

Java中事件处理机制如何实现

① 实现事件对应的监听器

实现方法:

class <自己的监听器名称> implements <监听器名称> {//抽象方法实现public void actionPerformed( ) {/** 按钮事件所进行的具体工作 **/}
}

常用事件监听器类:
、

② 注册监听器到事件源

绑定方法:每个组件都提供了用于绑定监听器的方法,通过观察 “addxxxListener” 方法的名称,可以很容易地知道其能够处理的事件类型。

示例代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/* 自己实现按钮监听器 */
class BtnListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮按下啦!");}
}public class AWTDemo06 {public static void main(String[] args) {Frame mFrame = new Frame("Hello World");mFrame.setLocation(500,500);mFrame.setSize(300,200);Button btn = new Button("Click me");mFrame.add(btn);/* 注册监听器 */btn.addActionListener(new BtnListener());mFrame.setVisible(true);}
}

效果如下:

接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』


http://chatgpt.dhexx.cn/article/glO757w4.shtml

相关文章

Java AWT布局

java.awt库提供5种基本布局。 每种布局都有其自身的意义,并且它们是完全不同的。 在本文的此处,我们将讨论如何将任何布局应用于框架或面板,并简要讨论每种布局。 java.awt库中可用的5种布局是: 边框布局 网格布局 GridBag布局 卡布局 流程布局 1.边框布局 BorderLayout…

swing java awt_java中AWT和SWing的区别与联系

AWT和Swing都是java中的包。 AWT(Abstract Window Toolkit)&#xff1a;抽象窗口工具包&#xff0c;早期编写图形界面应用程序的包。 Swing &#xff1a;为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。 AWT和Swing的实现原理不同&#xff1a; AWT的图…

java awt 教程,Java AWT教程

Java AWT教程 Java AWT(抽象窗口工具包)是一种API&#xff0c;用于使用Java开发GUI或基于窗口的应用程序。 Java AWT组件是平台相关的&#xff0c;即&#xff0c;组件是根据操作系统视图显示的。 AWT是重量级的&#xff0c;即其组件正在使用OS的资源。 java.awt包为AWT api提供…

swing java awt_Java awt和Swing的区别

Java awt是Java中早期用于编写图形图形应用程序的开发包&#xff0c;Swing是在awt的基础上构建的一套新的图形图像界面系统。简单来说&#xff0c;Swing是awt的扩展以及改良。那么我们来说一下关于Java中awt和swing的关系以及区别。 AWT awt是Abstract Window ToolKit (抽象窗口…

java awt 教程,Java AWT教程介绍

本文概述 Java AWT(抽象窗口工具包)是一种API, 用于使用Java开发GUI或基于窗口的应用程序。 Java AWT组件是依赖于平台的, 即, 根据操作系统的视图显示组件。 AWT是重量级的, 即其组件正在使用OS的资源。 java.awt包为AWT api提供了一些类, 例如TextField, Label, TextArea, Ra…

java awt类_JAVA中AWT编程

JAVA使用AWT和Swing 类完成图形用户界面编程&#xff0c;AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Interface)图形用户界面。 AWT是窗口框架&#xff0c;它从不同平台的窗口系统中抽取共同组件&#xff0c;当使用AWT编写图形…

AWT介绍

推荐阅读&#xff1a;Java图形界面详解(AWT、Swing) 专栏 文章目录 概述AWT继承体系 概述 Java使用AWT和Swing相关的类可以完成图形化界面编程&#xff0c;其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库&#xff0c;这个GUI库提供了一些…

AWT概述

目录 AWT继承关系 window Panel 布局管理器 FlowLayout&#xff08;流式布局管理器&#xff09; BorderLayout&#xff08;边界布局管理器&#xff09; GridLayout&#xff08;网格布局管理器&#xff09; GridBagLayout(网格包布局管理器) CardLayout(卡片布局管理器)…

Java基础--awt详解以及简单应用

GUI 图形用户界面 CLI 命令行用户接口 Java为GUI提供的对象存在java.Awt和Javax.Swing两个包中. Java当中如何完成图形化界面的制作呢? AWT:abstract Window ToolKit.需要调用本地系统实现功能.属于重量级控件.依赖于平台.跨平台性不是特别好. Javax.Swing:在AWT基础上.建立一…

【Java基础】之AWT,一篇文章搞懂awt(包含绘图)

&#x1f308;博客主页&#xff1a;屠一乐的博客 &#x1f4c5; 发文时间&#xff1a;2022.3.15 &#x1f388; 一定存在只有你才能做成的事 &#x1f339; 博主水平有限&#xff0c;如有错误&#xff0c;欢迎指正 欢迎给位&#x1f44d;收藏&#x1f48e;评论✉ Java awt &…

JavaGUI界面—窗口、按钮、文本框,及其解决按钮的中文乱码

一. Java图形化界面开发概述 通常情况下&#xff0c;java语言一般是用来开发后台程序的&#xff0c;所谓的后台程序就是部署在服务器端的程序&#xff0c;默默的工作&#xff0c;用户是看不到任何界面的。 事实上&#xff0c;我们使用java语言同样可以完成图形化界面程序的开…

Java GUI编程1---AWT简介

图形用户界面特征 图形用户界面(GUI)编程主要有以下几个特征&#xff1a; 图形界面对象及其框架(图形界面对象之间的包含关系)图形界面对象的布局(图形界面对象之间的位置关系)图形界面对象上的事件响应(图形界面对象上的动作) 在Java图形界面开发中有两种可使用的技术&…

Java图形化界面编程之——AWT

目录 1、AWT简介 2、AWT继承体系 3、Container容器 3.1、Container继承体系 3.2、常用API 3.2.1、Component的常用方法 3.2.2、Container的常用方法 3.3、容器演示 3.3.1、Window 3.3.2、Panel 3.3.3、ScrollPane 4、LayoutManager布局管理器 4.1、FlowLayout&…

Putty的使用及登录

Putty的使用及登录 Putty作为一个很方便并且免费的工具&#xff0c;下面就教大家如何下载并且进行免密登录 下载 https://www.putty.org/ 安装完成后会有如下几个选项&#xff0c;这里简单做一下介绍&#xff0c;第一个是秘钥生产工具&#xff0c;第二个是连接工具&#xff0c…

使用putty连接Linux

修改显示行数&#xff1a; 修改字体&#xff1a; 修改中文显示&#xff1a;

putty使用方法~SSH等

我的这些文字是从这几年来的 PuTTY 使用经验中慢慢得来的&#xff0c;也不仅仅是介绍 PuTTY&#xff0c;还包括了一些相关的软件&#xff0c;比如&#xff1a;优秀的 FTP 工具 FileZilla、功能强大的 SFTP 客户端 WinSCP。 杂七杂八的乱说了一些&#xff0c;这里把大致内容罗列…

怎样用putty设置SSH tunnel

http://davihigh.spaces.live.com/blog/cns!E64F2DAC77562C4F!115.entry 怎样用putty设置SSH tunnel 凡是不晓得SSH为何物的朋友可以略过&#xff0c;也可以google SSH开始了解它。这儿不重复了。SSH tunnel的功能简单说来&#xff0c;就是实现A主机XXX端口跟B主机YYY端口之间…

putty linux上安装及使用

方法&#xff11;. 用的是debian类系统&#xff0c;可以直接用源里的putty 安装更简单 apt-get install putty 方法&#xff12;.编译安装 官网下载地址 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 使用 filezilla 工具将文件上传到Linux 系统中 解压…

PuTTY介绍、安装及使用详细过程

#安装PuTTY并使用教程 ##PuTTY简介 PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台&#xff0c;在最近的版本中开始支持各类Unix平台&#xff0c;并打算移植至Mac OS X上。除了官方版本外&#xff0c;有许多第三方的团体或个人将PuT…

PuTTy:PuTTy的简介、安装、使用方法之详细攻略

PuTTy&#xff1a;PuTTy的简介、安装、使用方法之详细攻略 目录 PuTTy的简介 Putty设置中文方法 PuTTy的安装 PuTTy的使用方法 PuTTy的简介 Window操作系统需要连接网络&#xff0c;下载PuTTy程序。PuTTY是一个串行接口连接软件&#xff0c;多用于远程登录控制功能。PuTTY现…