T12 GUI图形用户界面AWT
第8章GUI 图形用户界面

第8章图形用户界面设计学习目标Java API提供了A WT和Swing两套组件来实现图形用户界面。
它们包含了用来设计图形用户界面的各种基本控制组件,容器组件和布局管理组件,并采用事件委托的处理模式。
本节将介绍A WT包和Swing包各自的特点,并学习Java组件的概念。
本章要点☑什么是GUI☑布局管理机制☑AWT组件☑Swing组件8.1 容器和组件容器和组件都是图形用户界面中的重要概念,本节将从容器与组件入手来学习图形用户界面的相关知识。
8.1.1 什么是用户图形界面图形用户界面(Graphics User Interface,GUI)提供了所见即所得的功能,方便了用户的操作,成为软件设计的通用标准。
Java语言提供了图形用户界面所需要的基本组件,这些组件全部包含在java.awt包中,利用这些组件可以设计出功能强大的GUI软件。
Java1.0的出现带来了A WT(Abstract Windowing Toolkit),中文译为抽象窗口工具包。
设计目标是希望构建一个通用的GUI,使得利用它编写的程序能够运行在所有的平台上。
在Java1.2中,Sun公司推出了新的用户界面库:Swing。
相对A WT来说,Swing功能更强大、使用更方便,它的出现使得Java的图形用户界面上了一个台阶。
但是,Swing并没有代替A WT,在Java1.1中,AWT事件处理模型有了根本改变。
Swing使用的仍然是Java1.1的事件处理模型。
8.1.1 容器和组件的概念容器是一种特殊的组件,它可以包含其他组件,即可以把组件放在容器中。
反之,如果一个组件不是组件容器,则其中不能包含其他组件。
容器也是一种组件,所以一个组件容器可以放在另一个组件容器中。
¤Java程序设计教程︻电脑基础·实例·上机系列教程︼A WT容器分为两类:外部容器和内部容器。
其中,外部容器一般会独立存在,例如Frame类;而内部容器则会嵌套在外部容器内部使用,例如Panel类。
图形用户界面GUI

JFrame
• 4.显示JFrame窗口:完成所有JFrame的 创建和设置后,需要执行显示JFrame窗 口语句。格式如下: • JFrame 对象名.setVisible(true); • JFrame 对象名.show();
JPanel
• Swing中的一个第二层容器,其中可以添 加各种组件,但是不能绘制图形,只能改 变其背景颜色
练习一
• 编写程序Beijing,创建一个JFrame窗口,并 在其中显示“北京欢迎你”和“Welcome to beijing”如图所示。
练习二
• 编写程序条纹,在JFrame窗口中加载5 个颜色不同的JPanel对象
JFrame
• 3.JFrame类中的方法 • Pack()方法:将JFrame的窗口设置为根 据其中所含的容器和组件的大小来决定 ,以能够容纳每个组件的最佳大小为准 • setSize(w,h)方法:准确设置Jframe窗口 的大小 • setBounds(x,y,w,h)方法:设置JFrame窗 口大小,设置窗口在屏幕中显示的位置
JPanel
• • • • 1.创建JPanel: 格式一: JPanel 对象名=new JPanel(); 格式二:
• JPanel 对象名=new JPanel(LayoutManager);
JPanel
• 2.添加组件:使用add方法可以将组件添 加到JPanel中,格式如下: • JPanel 对象名.add(参数)
GUI标准组件
• 容器(Container):容器是用来摆放图 形用户界面中的各种组件的一个矩形范 围 • 组件(Compnent):是图形用户界面的 基本组成单位,不能包含任何其他的组 件或者容器。
AWT和Swing
图形用户界面

Window Panel
ScrollPane
TextArea TextField
Dialog Frame
FileDialog
Component(组件)
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方式显 示在屏幕上并能与用户进行交互的对象,例如一个按 钮,一个文本框等。
10. f.add("East", new Button("East"));
11.
//第一个参数表示把按钮添加到容器的East区域
12. f.add("West", new Button("West"));
13.
//第一个参数表示把按钮添加到容器的West区域
14. f.add("Center", new Button("Center"));
LayoutManager (布局管理器)
为了使生成的图形用户界面具有良好的平台无关性, Java语言中,提供了布局管理器这个工具来管理组件 在容器中的布局,而不使用直接设置组件位置和大小 的方式。
每个容器都有一个布局管理器,当容器需要对某个组 件进行定位或判断其大小尺寸时,就会调用其对应的 布局管理器。
North区域缺少组件
West区域缺少组件
Center区域缺少组件
GridLayout
使容器中各个组件呈网格状布局
1. import java.awt.*;
2. public class ButtonGrid {
3. public static void main(String args[]) {
第5章图形用户界面

AWT
AWT (Abstract Window Toolkit) 译为抽象窗口工具包,它是 Java 语言为建立图形用户界面提供的 API。其主要功能包括:
用户界面组件 事件处理模型
图形和图像工具
布局管理器
Swing
Java最初作为网络编程工具,提供的 AWT功能比较弱,只能用来支持必要 的用户界面组件。随着Java被越来越 多的业内人士认可,应用范围的迅猛 扩展,Sun公司意识到需要对AWT的 设计进行修改,以适应于更加广泛的 开 发 目 的 , 于 是 就 诞 生 了 Swing 。 Swing是继AWT之后,更加丰富、功 能更加强大的GUI工具包,它构成了 JFC(Java Foundation Class)的图形 用户界面功能的核心部分。
Swing与AWT的主要区别
Swing具有控制外观(Pluggable look and feel)的能力,即允许用户自行 定制桌面的显示风格,比如,更换配 色方案,让窗口系统更加适应用户的 习惯和需要,而AWT 组件完全依赖 于本地平台。
增加了裁剪板、鼠标提示、拖放和打 印等功能。
与图形用户界面有关的包
draw(Shape shape) 使用图形设备文本的当前属性绘制由shape带 入的图形。 fill(Shape shape) 使用图形设备文本的当前属性填充由shape带 入的图形。 drawString(String text) 使用图形设备文本的当前属性绘制文本。 drawImage() 使用图形设备文本的当前属性显示图象。
Graphics2D应用举例
DrawTest
DrawFrame DrawPanel
import java.awt.*; import java.awt.geom.*; import javax.swing.*;
第04章 AWT

Java高级程序设计 程序设计
图形用户界面GUI(一)——AWT ( 图形用户界面
4.1 AWT工具集简介 --AWT类层次结构图
AWT类层次结构图如下:
Java高级程序设计 程序设计
图形用户界面GUI(一)——AWT ( 图形用户界面
4.2 AWT事件模型
Hale Waihona Puke 事件处理简介– Java GUI程序是事件驱动的,要让图形界面响应用户的操作,就 必须给各组件加上相应的事件处理代码. – 在事件处理过程中,主要包括3个部分: Event :事件,用户对界面组件的操作在Java语言上的描述, 以类的形式出现,如键盘操作事件的类是KeyEvent. Event Source :事件源,事件发生的场所,通常就是各个组 件,例如按钮Button. Event Handling :事件处理,接收事件对象并对其进行处理, 由事件监听器(Event Listener)实现.
Graphics类:提供了许多处理图形的方法,如绘制线条, 各种矩形,各种椭圆,弧线和多边形等. Color类:包含了操作颜色的方法和常量. Font类:包含了操作字体的方法和常量.
Java高级程序设计 程序设计
图形用户界面GUI(一)——AWT ( 图形用户界面
4.3 GUI组件上的图形操作 --组件重绘
AWT
– 即抽象窗口工具包(Abstract Window Toolkit),是Java API为Java程序提供的建立图形用户界面的基本工具集, AWT可用于Java Application和Java Applet的图形用户界面 的创建.
Java高级程序设计 程序设计
图形用户界面GUI(一)——AWT ( 图形用户界面
Java高级程序设计 程序设计
第12章 图形用户界面设计

12.2.2 按钮(Button)
按钮是AWT中最常见的一种组件,用户可以 通过单击该组件来实现特定的操作,当然,如果 希望按钮响应用户的单击操作,就需要实现相关 的鼠标单击事件。有关事件处理方面的内容,将 在12.5节中介绍。Button类的构造方法有两种: (1)Button()构造一个没有名称的按钮。 (2)Button(String label)构造一个指定名称的按钮。 按钮组件的生成方式如下: Button butobj=new Button ("确定"); 上面的语句生成了一个标记文字为“确定”的按 钮。
12.2 AWT基本组件
12.2.1 标识(Label)
AWT中最简单的就是标识了。所谓标识实质上就 是一段文字,但它与文字不同的是它是AWT构件。所 以在每次repaint时,不用重新添加。大多数AWT构件 都有多种构造方法,Label类中定义了三种: (1)Label()构造一个空的标识。 (2)Label(String text)构造建立一个以String为内容的标 识。 (3)Label(String text, int alignment)定义一个String标识。 这里int参数代表一个给定的对齐方式。可以是靠 左、靠右和居中,默认设置是居中。为了便于记忆, 在Label类中定义了相应的常量,Label.LEFT、 Label.CENTER和Label.RIGHT。
Component类的部分子类
Component
Button Scrollbar Label TextField
Canvas List Window Checkbox TextArea Frame
Container
Panel
Dialog
第十二章 图形用户界面
5、复选框(Checkbox)
给用户true\false择其一的功能 构造方法 Checkbox() Checkbox(String label) Checkbox(String label, boolean state) //把选项加入一个组,变成单选 Checkbox(String label, CheckboxGroup group, boolean state) Checkbox(String label, boolean state, CheckboxGroup group)
事件:用户在组件中触发的事件对象
事件源:产生事件的组件
事件监听者:处理某事件的对象
外部作用 2 3 4 组件(事 件源) 1
生成事件对象 发消息给监听者 组件(事件监 听者) 事件监听者注册
构造方法
MenuItem() MenuItem(String label) MenuItem(String label, MenuShortcut s) 常用方法 getLabel() setLabel() isEnable() setEnable(boolean)
【例12.5】
4、弹出菜单(PopupMenu)
构造方法
public Button() public Button(String label)
常用方法:
public String getLabel() public void setLabel(String label)
图形用户界面概述和javaawt包共205页
1
0
、
倚
南
窗
以
寄
傲
,
审
容
膝
之
易
安
。
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
文 家 。汉 族 ,东 晋 浔阳 柴桑 人 (今 江西 九江 ) 。曾 做过 几 年小 官, 后辞 官 回家 ,从 此 隐居 ,田 园生 活 是陶 渊明 诗 的主 要题 材, 相 关作 品有 《饮 酒 》 、 《 归 园 田 居 》 、 《 桃花 源 记 》 、 《 五 柳先 生 传 》 、 《 归 去来 兮 辞 》 等 。
图形用户界面概述和javaawt包
6
、
露
凝
无
游
氛
,
天
高
风
景
澈
。பைடு நூலகம்
7、翩翩新 来燕,双双入我庐 ,先巢故尚在,相 将还旧居。
8
、
吁
嗟
身
后
名
,
于
我
若
浮
烟
。
9、 陶渊 明( 约 365年 —427年 ),字 元亮, (又 一说名 潜,字 渊明 )号五 柳先生 ,私 谥“靖 节”, 东晋 末期南 朝宋初 期诗 人、文 学家、 辞赋 家、散
JAVA教程第五讲AWT图形用户界面设计5.3
5.3 AWT组件库(1) 本节从应⽤的⾓度进⼀步介绍AWT的⼀些组件,⽬的使⼤家加深对AWT的理解,掌握如何⽤各种组件构造图形化⽤户界⾯,学会控制组件的颜⾊和字体。
下⾯是⼀些常⽤的组件的介绍: 1.按钮(Button) 按钮是最常⽤的⼀个组件,其构造⽅法是:Button b = new Button("Quit"); 当按钮被点击后,会产⽣ActionEvent事件,需ActionListener接⼝进⾏监听和处理事件。
ActionEvent的对象调⽤getActionCommand()⽅法可以得到按钮的标识名,缺省按钮名为label。
⽤setActionCommand()可以为按钮设置组件标识符。
2.复选框 (Checkbox) 复选框提供简单的"on/off"开关,旁边显⽰⽂本标签。
构造⽅法如下: setLayout(new GridLayout(3,1)); add(new Checkbox("one",null,true)); add(new Checkbox("two")); add(new Checkbox("three")); 复选框⽤ItemListener 来监听ItemEvent事件,当复选框状态改变时⽤getStateChange()获取当前状态。
使⽤getItem()获得被修改复选框的字符串对象。
例5.13 class Handler implements ItemListener { public void itemStateChanged(ItemEvent ev){ String state = "deselected"; if (ev.getStateChange() = = ItemEvent.SELECTED){ state = "selected" } System.out.println(ev.getItem()+" "+state); } } 3.复选框组(CheckboxGroup) 使⽤复选框组,可以实现单选框的功能。
Java中GUI工具包AWT和Swing用法介绍
Java 中GUI ⼯具包AWT 和Swing ⽤法介绍java 中编写 GUI 有两中⼯具包,分别为 AWT 、Swing 。
Swing 是 AWT 的拓展,Swing 具有⽐ AWT 丰富的组件和⽅法。
AWT 和 Swing 都能跨平台使⽤;AWT 会随着不同的系统平台,UI 样式会有所变化,Swing 则不会,设计完毕后在所有平台下样式⼀致。
1import java.awt.*;⼀个 awt ⽰例下⾯是⼀个窗⼝⽰例12345678910import java.awt.*;public class MyFrame extends Frame { public MyFrame(){ super("测试"); setSize(400,200); setVisible(true);} public static void Main(String args[]){new MyFrame();}}创建⼀个窗⼝,要继承 Frame ,同时会继承 Frame 中的⼀些⽅法;Frame 中:super ⽅法可以设置窗⼝标题;setSize 设置窗⼝⼤⼩,(width,hight)setVisible 设置是否显⽰窗⼝,true 显⽰,false 隐藏setLayout(new FlowLayout());⽤于设置窗⼝布局;add(组件); ⽤于向窗⼝添加组件,例如按钮等。
我们来向窗⼝添加组件123import java.awt.*;public class MyFrame extends Frame {public MyFrame(){4567891011121314super("测试");setLayout(new FlowLayout());Button btn=new Button("Button");Font f=new Font("宋体",Font.BOLD,28);btn.setFont(f);add(btn);setSize(400,200); setVisible(true);}在 main ⽅法中启动窗⼝12public static void main(String args[]){new MyFrame();效果事件java 中,事件分为三个⽅⾯描述,事件源:发⽣事件的对象事件处理:委托事件处理模型事件监听者:负责处理事件⾸先B监听A,设置监听的内容,并设置响应内容。