第9章9的用户界面 Touuspspuaip
第 9 章 Java的图形用户界面
主要内容 ■9.1JC的组成 9.1.1AWT 9.1.2 Swing 9.1.3 Drag and Drop .9.1 4 Java 2D 9.1.5 Java Accessibility 9.2应用程序和小程序界面图形化 9.2.1 Swing的根面板 9.2.2小程序的典型例子 ·9.2.3应用程序的典型例子 9.2.4结合小程序和应用程序的典型例子 ■9.3AWT的组件布局管理模型 ·9.3.1基于策略模式的授权模型 ·9.3.2布局管理器类 9.4AWT的事件处理模型 9.4.1基于观察者模式的授权模型 ·9.4.2事件源 9.4.3事件类 9.4.4事件监听器 9.4.5创建事件监听器对象 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 2 主要内容 ◼ 9.1 JFC的组成 • 9.1.1 AWT • 9.1.2 Swing • 9.1.3 Drag and Drop • 9.1.4 Java 2D • 9.1.5 Java Accessibility ◼ 9.2 应用程序和小程序界面图形化 • 9.2.1 Swing的根面板 • 9.2.2 小程序的典型例子 • 9.2.3 应用程序的典型例子 • 9.2.4 结合小程序和应用程序的典型例子 ◼ 9.3 AWT的组件布局管理模型 • 9.3.1 基于策略模式的授权模型 • 9.3.2 布局管理器类 ◼ 9.4 AWT的事件处理模型 • 9.4.1 基于观察者模式的授权模型 • 9.4.2 事件源 • 9.4.3 事件类 • 9.4.4 事件监听器 • 9.4.5 创建事件监听器对象
9.1JFC的组成
9.1 JFC的组成
Java基础类 Java Foundation Classes, JFC Java 2D AWT JFC由5个AP组成: Drag and Drop AWT、 Swing、Java Accessibility 2D、 Drag and Drop 和 Accessibility JFC 2021/2/20 ava面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 4 Java基础类 ◼ Java Foundation Classes,JFC ◼ JFC由5个API组成: AWT、Swing、Java 2D、Drag and Drop 和Accessibility
基于对等组件的AWT ■AWT( Abstract window toolkit)是一个独立 平台的窗口工具组件集 依赖于对等组件 (Peer),而对等组件是一种本地GUI组件,由 AWT类管理。 ■AWT的作用是给用户提供基本的界面组件,如按 钮、列表、菜单等等。 AWT组件中,包含有对其对等组件的大量实用操 作,而AWT类仅仅是对等组件外围的包装与操作 具,因此,对等组件可以快速产生一个GUI 具组件 对于最初的AWT,其开发组只用了不到6个星期 的时间,但存在大量的缺陷 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 5 基于对等组件的AWT ◼ AWT(Abstract Window Toolkit)是一个独立 平台的窗口工具组件集,它依赖于对等组件 (Peer),而对等组件是一种本地GUI组件,由 AWT类管理。 ◼ AWT的作用是给用户提供基本的界面组件,如按 钮、列表、菜单等等。 ◼ AWT组件中,包含有对其对等组件的大量实用操 作,而AWT类仅仅是对等组件外围的包装与操作 工具,因此,对等组件可以快速产生一个GUI工 具组件。 ◼ 对于最初的AWT,其开发组只用了不到6个星期 的时间,但存在大量的缺陷
重量组件 ■AWT最初只包括与本地对等组件相关联的 组件,称为重量组件( Heavyweight component)。 ■这些组件在它们自己的本地不透明窗口中 绘制,这样使用将花费昂贵的代价,而且 在更改其默认行为时,不可以为其扩展子 米 ■它们必须是矩形的,而且不能有透明的背 景 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 6 重量组件 ◼ AWT最初只包括与本地对等组件相关联的 组件,称为重量组件(Heavyweight component)。 ◼ 这些组件在它们自己的本地不透明窗口中 绘制,这样使用将花费昂贵的代价,而且 在更改其默认行为时,不可以为其扩展子 类。 ◼ 它们必须是矩形的,而且不能有透明的背 景
轻量组件 在AWT1.1版本中引入。 轻量组件直接扩展了 java. awt. Component或 java. awt Container ■轻量组件没有本地对等组件,它不在本地不透明窗口中绘 制,而是在它们的重量容器窗口中绘制 3轻量组件不会导致与它们关联的不透明窗口的性能损失, 而且还可以有透明的背景。 透明的背景使显示的轻量组件可以是非矩形的,虽然所有 组件(重量的或轻量的)都有一个矩形边框 在轻量组件的容器中必须有一个是重量组件,否则无法在 窗口内绘制轻量组件。 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 7 轻量组件 ◼ 在AWT 1.1版本中引入 。 ◼ 轻量组件直接扩展了java.awt.Component或 java.awt.Container。 ◼ 轻量组件没有本地对等组件,它不在本地不透明窗口中绘 制,而是在它们的重量容器窗口中绘制。 ◼ 轻量组件不会导致与它们关联的不透明窗口的性能损失, 而且还可以有透明的背景。 ◼ 透明的背景使显示的轻量组件可以是非矩形的,虽然所有 组件(重量的或轻量的)都有一个矩形边框。 ◼ 在轻量组件的容器中必须有一个是重量组件,否则无法在 窗口内绘制轻量组件
AWT组件的分类 java awt. Component 列表等组件的抽象基本类,AWT中大约有一半的 是从它这里扩展出来的。 java. awt Container 扩展 Component的抽象基本类。在容器中可以包含多个组件,我们 可以使用 组合成一个整体,以简化程序GUI的设计 同时有利于组件的显 。由 Container演变出来的类有Pane Applet、 Window、 Dialog和 Frame等 java. awt, LayoutManager FIjava. awt. LayoutManager2 定义容器中组件位置和 法的接口。]ava中定 种默认的布 局管理器,如 FlowLayout、 Border layout、 CardLayout GridLayout和 Grid BagLayout等 java. awt. Graphics 定义组件内图形操作的基本类,每个组件都有一个相关的图形对象。 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 8 AWT组件的分类 ◼ java.awt.Component 菜单、按钮、标签、列表等组件的抽象基本类,AWT中大约有一半的 类是从它这里扩展出来的。 ◼ java.awt.Container 扩展Component的抽象基本类。在容器中可以包含多个组件,我们 可以使用容器将相关组件组合成一个整体,以简化程序GUI的设计, 同时有利于组件的显示安排。由Container演变出来的类有Panel、 Applet、Window、Dialog和Frame等。 ◼ java.awt.LayoutManager和java.awt.LayoutManager2 定义容器中组件位置和尺寸方法的接口。Java中定义了几种默认的布 局管理器,如FlowLayout、BorderLayout、CardLayout、 GridLayout和GridBagLayout等 ◼ java.awt.Graphics 定义组件内图形操作的基本类,每个组件都有一个相关的图形对象
Swing和AWT的关系 Swing重量组件 Swing轻量组件 框架、窗体、 AWT 对话框 组件、容器、图形、颜色、字体、 工具包、布局管理器等 Swing是用来替代AWT的重量组件,而不是用来替代AWT本身 Swing使用AWT最好的部分来建立一个新的轻量组件集,并且丢弃了 AWT中有问题的重量组件部分 ■ Swing利用了AWT的底层组件,包括图形、颜色、字体、工具包和布 局管理器 Swing没有使用AWT的顶层 除了 Frame. Window和Daog 份分别被 Swing的重量组件rame、 JWindow和 JDialog所 扩展 2021/2/20 ava面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 9 Swing和AWT的关系 ◼ Swing是用来替代AWT的重量组件,而不是用来替代AWT本身。 ◼ Swing使用AWT最好的部分来建立一个新的轻量组件集,并且丢弃了 AWT中有问题的重量组件部分。 ◼ Swing利用了AWT的底层组件,包括图形、颜色、字体、工具包和布 局管理器。 ◼ Swing没有使用AWT的顶层组件,除了Frame、Window和Dialog 类,它们分别被Swing的重量组件JFrame、JWindow和JDialog所 扩展
插入式界面样式 Swing支持插入式界面样式( Pluggable Look and-Fee),它的基础是模型一视图一控制 Mode|-VieW- Contro川ler,MVC)架构。 Swing组件的代理是 ComponentUI类的一个扩 展,它是SWng工具包中 个]aVa类,其中定 义了所有UI代理的公共行为,这些行为可以在扩 展组件中进行修改。 对于插入式界面样式,Swng组件的U代理负责 显示组件和处理输入事件的视图一控制器 当Swng组件配备了一个修改过的组件U时,组 件的可视外观或事件处理都是可以修改的。 2021/2/20 java面向对象程序设计教程
2021/2/20 Java面向对象程序设计教程 10 插入式界面样式 ◼ Swing支持插入式界面样式(Pluggable Lookand-Feel),它的基础是模型-视图-控制 (Model-View-Controller,MVC)架构。 ◼ Swing组件的代理是ComponentUI类的一个扩 展,它是Swing工具包中的一个Java类,其中定 义了所有UI代理的公共行为,这些行为可以在扩 展组件中进行修改。 ◼ 对于插入式界面样式,Swing组件的UI代理负责 显示组件和处理输入事件的视图-控制器。 ◼ 当Swing组件配备了一个修改过的组件UI时,组 件的可视外观或事件处理都是可以修改的