版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 Java技术及其应用技术及其应用 2 v第1章 语言基础 v第2章 面向对象结构 v第3章 基本I/O v第4章 增强性能类 v第5章 收集与数据结构应用 v第6章 图形用户界面及桌面应用 v第7章 小程序及多媒体应用 v第8章 JDBC与数据库应用 v第9章 JavaBeans及组件应用 v第10章 网络与Web服务应用 3 Java技术及其应用技术及其应用 第第5章章 收集与数据结构收集与数据结构 应用应用 4 v如果我们知道多个对象的准确数量,可以用 数组这种数据类型来存放这些对象。但在很 多情况下,对象个数并不能事先确定,用数 组保存就有困难。Java设计了收集(collectio
2、n) 系列,提供了更复杂的方式保存对象,解决 了数组无法解决的问题。 5 5.1收集的概念收集的概念 v收集有时也叫容器(container),它把多个元素 放进一个单元里,形成一个对象。收集用于存 储、读取、处理和交流聚集的数据。 vJava的收集形成了收集框架(collections framework)的体系结构,包括接口、实现、算 法三部分。这种框架有许多优点,比如减轻编 程负担,增加编程速度与质量,鼓励软件复用 等。 6 v这是收集系列的根,具有最大的通用性,允许 重复元素存在,不要求元素排序等,是其他特 殊收集的“最小公倍数”。通用目的的各种收 集在实现时都用Collection做
3、构造方法的参数, 方便转换收集的类型。 5.2 Collection接口接口 7 vSet是不能包含重复元素的Collection,它是 数学集合抽象的模型。Set接口的方法仅继承 了Collection的方法,并增加不允许重复元素 的限制。 5.3 Set 8 vJava平台有三种通用目的的Set实现: HashSet,TreeSet和LinkedHashSet。 HashSet用哈希表存放元素,实现性能最好, 但不保证列举顺序。TreeSet用红-黑树存放 元素,按元素值排次序,比HashSet慢。 LinkedHashSet是链表实现的哈希表,按元 素插入集合的顺序排次序,次序不混乱,但
4、 代价高一些,介于HashSet和TreeSet之间。 5.3.1 Set的实现 9 vSet与成批操作形成数学的集合代数运算。 假设a和b是Set,a.containsAll(b)可以判 断b是否a的子集。a.addAll(b)形成a并b, a.retainAll(b)形成a交b,a.removeAll(b)形 成a与b的差。还可以求a与b的对称差,即 a与b的非共同元素组成的集合。 5.3.2 Set的数学应用 10 vList是有序的Collection,有时也叫序列 (sequence),基本上是按插入顺序排列的, 可以包含重复元素。List接口继承了 Collection的方法,删除
5、操作总是删除列表中 第一个出现的指定元素,加入操作总是加在 列表的末尾。 5.4 List 11 vJava平台有两种通用目的的List实现: ArrayList和LinkedList。前者提供固定时间 的按位置访问,插入删除是线性时间,通常 性能比较好。后者的插入删除是固定时间, 在经常需要插入删除时性能稍好。 5.4.1 List的实现 12 5.4.2 List的数据结构应用 vCollections类有许多算法适用于List,如合并 排序(sort)、随机搅乱(shuffle)、序列反向 (reverse)、循环(rotate)、元素交换(swap)、 全部替换(replaceAll)
6、、填充(fill)、拷贝(copy)、 二分搜索(binarySearch)、首个子列表下标 (indexOfSubList)、末个子列表下标 (lastIndexOfSubList)等,方便我们对数据进 行处理。 13 vQueue是保持元素重于处理元素的Collection, 通常是按先进先出方式安排元素,插入元素 是在队尾,删除元素是在队头。但优先队列 是按值来安排的,插入不一定在队尾。有些 Queue实现时限制了所保持元素的数量,称 为限界。 5.5 Queue 14 v每种Queue实现必须说明它的安排性质。 LinkedList类实现了Queue接口,提供了先进 先出队列的操作。P
7、riorityQueue类是基于优 先堆数据结构的优先队列,也实现了Queue 接口。BlockingQueue接口是并发Queue接 口 , 定 义 了 阻 塞 队 列 的 方 法 , 由 SynchronousQueue类等几个并发队列类实 现它。 5.5.1 Queue的实现 15 v用优先队列实现堆排序。先创建一个随机列 表,然后把随机列表放入PriorityQueue构造 方法中形成堆,优先队列中删除的每个元素 依次加入列表中,输出的列表已排好序。 5.5.2 Queue的数据结构应用 16 vMap是把键(key)映射到值(value)的对象,映 射不能包含重复的键,一个键至少可以
8、映射 一个值,它是数学函数抽象的模型。 5.6 Map 17 vJava平台有三种通用目的的Map实现: HashMap,TreeMap和LinkedHashMap, 它们的性能与HashSet,TreeSet和 LinkedHashSet类似。HashMap速度最快, TreeMap能够排序,LinkedHashMap性能接 近 H a s h M a p 并 保 持 插 入 顺 序 。 但 LinkedHashMap可以根据键遍历,它还有 removeEldestEntry()方法删除旧的映射。 5.6.1 Map的实现 18 vcontainsAll()、removeAll()、reta
9、inAll()等成 批操作支持Map运算. 5.6.2 Map的数学应用 19 vSortedSet是按升序维护元素的Set,集合中 的 元 素 如 果 没 有 实 现 j a v a . l a n g 包 的 Comparable接口无法比较,SortedSet就要 提供java.util包的Comparator接口方法控制元 素的次序。列举SortedSet元素时按其次序进 行,转换成数组时元素仍是有序的。 5.7 SortedSet 20 vSortedMap是按升序维护元素的Map,Map 中的元素按键的自然顺序排列,或者按 Comparator接口方法控制元素的次序。 5.8 So
10、rtedMap 21 v这个类是Java收集框架的一个成员,它包含 大量静态方法操纵或返回收集。它包含多态 算法操纵收集;有包装器(wrapper),返回 一个指定收集支持的新收集。 5.9 Collections类类 22 5.9.1 静态方法 vCollections类的静态方法sort(List list)可 以按自然排序对List进行升序排序, sort(List list,Comparator c) 可以按具体的comparator对List进行排序。除 此以外,Collections类还提供了 binarySearch()、copy()、fill()、reverse()、 rota
11、te()、shuffle()等静态方法操纵List对象。 Collections类提供了disjoint()、 enumeration()、frequency()、max()、min() 等静态方法操纵Collection对象,当然,对 Set和Map也提供了一些静态方法。 23 v包装器(wrapper)对指定收集加入新功能,有 同步包装器(synchronization wrapper)、不许 修改包装器(unmodifiable wrapper)和检查接 口包装器(checked interface wrapper)等。 Collections类的静态方法对六种收集接口对 象Collec
12、tion、Set、List、Map、SortedSet、 SortedMap都提供了包装器。 5.9.2包装器 24 v有些方法可以简单地实现收集对象,比如 Arrays.asList()就是用数组做参数而形成的列 表,但是不能修改。Collections类也有一些 方便方法。 5.9.3方便实现 25 vCollections类的多态算法(polymorphic algorithms)是可复用的功能块,由前面介绍 的静态方法实现,可分为排序(Sorting)、搅 乱(Shuffling)、常规数据处理(Routine Data Manipulation)、搜索(Searching)、组合 (
13、Composition)、寻找极值(Finding Extreme Values)等六类。 5.9.4 Collections类的数据结构应用 26 vjava.util包有几个抽象类,是Java平台提供的 收集的抽象实现机制,使用户可以自己实现 收集接口,以增加功能或提高性能。它们分 别是AbstractCollection,AbstractSet, AbstractList,AbstractSequentialList, AbstractQueue,AbstractMap。 5.10抽象实现抽象实现 27 Java技术及其应用技术及其应用 第第6章章 图形用户界面及图形用户界面及 桌面应用
14、桌面应用 28 v图形用户界面GUI是一种以图形方式进行人 机交互的用户界面,Java 利用面向对象的方 法,实现了一组设计GUI的类,这些类可以 工作在多种平台上。早期版本的图形用户界 面是AWT,是抽象窗口工具集(Abstract Windows Toolkit)的含义,后来在AWT的基础 上又推出了更完善的图形用户界面Swing工 具集。Java SE6增强了桌面应用功能,目的 是与.net的桌面应用竞争。本章将介绍Java 的图形用户界面及其桌面应用实例。 29 6.1 AWT v AWT是Java早期版本的图形用户界面 (Graphical User Interface),AWT特点
15、包括一 组本地的用户接口组件、健壮的事件处理模型、 图形和图像工具(包括形状、颜色和字体类)、 布局管理器、数据传输类等。AWT提供了许 多标准GUI组件(Component),如按钮 (button),菜单(menu)等,还提供了容器 (container)类如窗口等,以及高级组件如对话 框(dialog)等。 30 v在AWT中的所有GUI组件都是Component类 的子类,从功能上看,Component的子类分 两大部分,一是控制组件,二是容器类及其子 类。 控制组件又可分为基本控制组件 (Button, Checkbox,Choice,List,MenuComponent 和Text
16、Field),复杂控制组件(Canvas, TextArea)和其他控制组件(Scrollbar,Label)。 6.1.1 GUI组件类 31 v1. Component类 v Component类是所有AWT组件的抽象超 类,它定义了在各种窗口对象中最基本也是 最重要的方法和性质,其基本作用是描述组 件的位置,大小,以及接收输入事件。 vComponent类有许多子类,除了一个特殊子 类容器类之外,其余子类都是控制组件,实 现人机交互的控制界面。 32 v2. Container(容器)类 v Container不是控制组件,它是用来包含其 他组件的组件。java.awt.Containe
17、r 定义最基 本的组件容器,它是Component类的抽象子 类,在Component类方法的基础上又增加了 一些方法。 v由Container派生出Window,Panel,Dialog, Frame,FileDialog等后继类。 33 v为了安排容器中各组件的布局,AWT提供了 一个LayoutManager接口,实现该接口的类 称为布局管理器。布局管理器跟踪容器中的 组件,组件加入后,由布局管理器把它放在 合适的位置。当组件改变大小,通过 minimumsize和preferredsize方法返回组件 最合理与最小的显示尺寸,布局管理器在维 护布局规则的完整性下尽量满足各组件的显 示要
18、求。 6.1.2 布局管理器 34 vAWT中除了有GUI组件之外,还定义了事 件(event)处理的各种方法。当用户对组件 进行交互,如按动Button或选Menu等,事 件就产生了,即创建了Event对象。 java.awt.Event 类定义了所有的事件。 6.1.3事件处理 35 vSwing工具集包含丰富的组件集合,用于构 建GUI,并将交互性加入Java应用程序。它 还包括撤消功能、可定制的文本包、集成的 国际化和可访问性支持等。为了提高Java平 台跨平台的能力,Swing支持各种视感。 Swing支持基本的用户界面特性,如拖放、 事件处理、可定制绘图和窗口管理。 6.2 Swi
19、ng 36 vSwing工具集支持组件间的数据传输,可 以在同一个应用程序的组件间传、在不同 应用程序的组件间传、在Java与本地应用 程序间传。数据可以用拖放姿势传,也可 以用剪贴板剪切、拷贝和粘贴方式来传输。 vSwing是Java基础类(Java Foundation Classes) (简称JFC)的一部分,Swing API 大部分放在javax.swing包中,小部分放在 javax.accessibility包中。 37 vSwing组件比AWT丰富得多,从按钮、分隔 窗到表格等等,许多组件还支持排序、打印、 拖放等功能。 vSwing提供了三种顶层容器类:JFrame、 JDi
20、alog和JApplet,它们是包含层次的根。 顶层容器有一个内容窗(content pane),并且 可以加入一个菜单条。GUI组件作为包含层 次的一部分才可以显示在屏幕中,包含在一 个容器中就不能同时包含在另一个容器中。 6.2.1 Swing组件 38 6.2.2 Swing并发性 vSwing程序通常用并发性创建能及时响应的 用户界面,这是由Swing框架采用线程所支 持的。Swing所用的线程有初始线程(Initial thread)、事件分派线程(event dispatch thread)、背景线程(background thread)等。 39 vSwing的事件模型功能强而且
21、灵活,多个事 件监听对象可以监听来自多个事件源对象的 各种事件。事件监听者执行要迅速,否则要 放入另一个线程运行,以免影响界面响应性。 事件监听者有一个参数,是继承EventObject 类的对象,ActionEvent就是它的子类。 6.2.3 事件监听 40 vSwing类与AWT类一样,也提供了容器组件 布局,这些布局管理器有BorderLayout、 BoxLayout、CardLayout、FlowLayout、 GridBagLayout、GridLayout、GroupLayout、 SpringLayout。 6.2.4 容器组件布局 41 vSwing可以修改视感(look
22、and feel),所谓 “视”指JComponent的外观,所谓“感” 指组件的行为。 6.2.5 修改视感 42 vSwing还有许多特性可以使用。比如能与 Desktop类集成,使Java应用与平台交互。 可以使用Swing Timer类,让线程在延时后执 行一个动作。可以实现键绑定、打印表、打 印文本、创建飞溅屏幕等等。 6.2.6 Swing其他特性 43 v拖、放、剪切、拷贝、粘贴数据可以统称为 数据传送,大多数应用都有这类基本特性。 这里专门介绍Swing 提供的数据传送机制, 这是Java SE 6新增的功能。 6.3 拖放与数据传送拖放与数据传送 44 vSwing数据传送机
23、制的核心是 TransferHandler类,它提供了为 JComponent 传送数据的方便机制。有三种 方法可以使组件联系TransferHandler类: setTransferHandler(TransferHandler)用于插 入定制的数据而输入输出, setDragEnabled(boolean)允许拖动作, setDropMode(DropMode)用于配置如何确定 放的位置 。 6.3.1 Swing数据传送机制 45 v在应用程序之间传送数据可以用拖和放实现。 比如想从列表中把部分文本拖到文本域中存 放,我们称列表输出数据而文本域输入数据, Swing负责监视用户动作和反应
24、,而对某些 组件如JList、JTable、JTree,需要插入一些 代 码 支 持 拖 放 需 要 。 比 如 J L i s t 类 提 供 s e t D r o p M o d e ( ) 方 法 设 定 放 方 式 , JTable.setDropMode()方法有更多选择。 6.3.2 拖和放 46 v在应用程序之间传送数据可以通过剪贴板的剪切、拷贝、粘 贴来实现。这需要以下步骤: v1.保证传送处理器已装在组件中。 v2.创建一种方式使TransferHandler可以调用剪切、拷贝、粘 贴支持。通常包括绑定输入,使TransferHandler的剪切、拷 贝、粘贴动作用响应特定
25、击键来调用。 v3. (建议.)创建剪切、拷贝、粘贴菜单项和按钮,文本组件容 易做到,其他组件难一些,因为要确定哪个组件激发动作。 v4.确定在何处执行粘贴,把确定逻辑安装在importData()方 法中。 6.3.3 剪切、拷贝、粘贴 47 vSwing组件有一定程度的内建访问性,帮助 无法使用计算机的人。遵循以下简单规则可 以获得完全的访问性:在可能之处分配工具 提示、键盘替代、用文字描述图像等。 6.4 访问性访问性 48 6.5 打印打印 vJava打印服务API支持在所有Java平台上打 印,打印服务API包括四个包:javax.print包 提 供 打 印 服 务 的 主 要 类
26、 和 接 口 ; javax.print.attribute包的类与接口描述Java打 印服务属性的类型; javax.print.attribute.standard包的类定义特定 的打印属性;javax.print.event包有事件类和 监听者接口,用于监控打印服务和特定打印 任务的进展。 49 v输入方法框架使文本编辑组件和输入文本的 方法可以合作,输入方法是软件组件,使用 户可以输入文本而不仅是简单敲键盘。这些 方法通常用于输入中文、日文、韩文等,在 键盘上用较少的键输入数千个不同字符。输 入方法框架也支持不同的输入机制的输入方 法,如手写输入和语音识别。 6.6 输入方法框架输入方
27、法框架 50 v Java允许程序员挂起窗口操作系统,直接绘 图到屏幕上,这与GUI编程有一点不同。以 前由AWT通过事件分派线程将绘图事件传给 操作系统,适当的时候调用AWT的 Component.paint方法绘图。在全屏方式应用 中,绘图通常是由程序自己主动做的。传统 GUI应用局限在用户选定的屏幕大小和深度, 而在全屏方式应用中,程序可以控制屏幕显 示方式的大小和深度。在某些平台中,许多 高级技术例如页翻转和体视缓冲(stereo buffering)要求应用程序首先进入全屏方式。 6.7 全屏方式全屏方式 51 vJava SE 6增强了桌面能力,提供了Desktop API、系统托
28、盘(system tray)功能、支持飞溅 屏幕(splash screen)、增强了JTable的打印 机制,允许Java应用与桌面无缝集成。能支 持三种集成:用具体的统一资源识别符URI启 动主机系统的默任浏览器;启动主机系统的 默任邮件客户;启动应用程序打开、编辑、 打印文件。 6.8 桌面应用桌面应用 52 Java技术及其应用技术及其应用 第第7章章 小程序及多媒体小程序及多媒体 应用应用 53 vJava的小应用程序能在Java兼容的浏览器上 运行,浏览器可以从Internet下载applet并在 本地运行,applet带有可视化信息,广泛用 于WWW页面。改进了原来网页的静态方式
29、, 增加了交互性。Java广泛应用的原因之一是 它支持多媒体信息。现在计算机已经能综合 处理多种媒体信息,包括文本、图形、图像、 声音以及动画等。Java在它的类库中增加了 支持图形、图像、声音、动画等类和接口。 本章将介绍Java的小程序与多媒体功能及其 应用。 54 7.1 小应用程序小应用程序 v小应用程序由Applet类定义,java.applet包主 要有Applet类和AppletContext、AppletStub、 AudioClip接口,Applet类定义了applet的各种 行为,并提供了实现applet的图形用户界面, 处理鼠标或键盘事件等方法。AppletContext
30、 接口对应于applet的环境,AppletStub作为 applet和浏览器环境(或小程序查看器)之间的 接口,AudioClip 接口提供了声音的高层抽象。 55 vpublic void init(),对刚装入的applet进行初始 化。 vpublic void start(),开始applet的运行,当 applet初始化后就执行start(),若用户重新访 问含有该applet的页面时也执行start()。 vpublic void stop(),停止applet的运行,当用 户离开该applet页面或退出浏览器时都会停止。 vpublic void destroy(),对appl
31、et进行最后清除, 释放所有资源。 7.1.1 四个重要方法 56 vApplet类有两个绘制方法,一个是paint(),另一 个是update()。 vpublic void paint(Graphics g)方法是applet经 常使用的绘制方法,可在浏览器页面画出 applet的表现。它有一个Graphics类参数, Graphics在java.awt包中,所以用到paint方 法的applet都引入了java.awt包。 vpublic void update(Graphics g)方法与paint() 配合可改进绘制性能,如消除画面闪动等。 7.1.2 绘制方法 57 vapplet
32、利用事件处理来实现人机交互功能, 最主要的事件处理方法是 handleEvent(), 对于人机交互来说,鼠标动作和键盘动作都 是常见的事件,要处理事件,applet 必须重 写handleEvent()或其他相应事件的处理方 法。 7.1.3 事件处理方法 58 v容易加入java.awt包中的方法,增强小程 序图形界面的功能。这些方法有: add(), 增加指定的组件(Component)到小程序中, remove()是去掉指定的组件, getComponent() 是获得组件,locate()是 将组件放在指定x,y位置,setLayout()设 置小程序中组件的布局管理器, prefe
33、rredSize()返回组件的合适尺寸等。 7.1.4 加入java.awt的方法 59 v如果你希望小程序给用户一些文字反馈信息, 可以用showStatus()方法小程序窗口底部的 状态位置显示这些信息。如: v showStatus(Stop playing sound file.); v将在小程序窗口最底一行显示Stop playing sound file。 7.1.5 showStatus()方法 60 v当小程序用相对URL装载数据文件,通常用 JApplet的getCodeBase()方法或JApplet的 getDocumentBase()方法。前者指从小程 序.class文
34、件所在的目录找数据,后者指从 包装小应用程序的HTML文件所在目录找数 据。 7.1.6装入数据文件 61 7.1.7 使浏览器显示文档 v用AppletContext接口的showDocument()方 法可以显示HTML文本,一个方法只有单参数: public void showDocument(.URL url), 另一个方法有两个参数:public void showDocument(.URL url, String targetWindow)。第一个参数表示小程序想显 示什么URL指向的HTML文档,第二个参数表 示在哪个浏览器窗口显示它。 62 v小程序可以用AppletConte
35、xt接口的 getApplet()方法根据名字找另一个小程序, 或者用getApplets()方法找同一页的全部小程 序。 7.1.8 找同一页中运行的其他小程序 63 v(1) 不能装载类库或定义native方法。 v(2) 不能在执行它的主机中读写文件。 v(3) 不能进行网络连接,除非是连接它所在的主机。 v(4) 不能在执行它的主机中启动任何程序。 v(5) 不能读任何系统属性。 v(6) 小应用程序的窗口会带有警告性信息,提醒用户 这不是可靠的应用程序的窗口。 7.1.9 小应用程序的其他事项 64 vJava Web Start(JWS)是Sun公司推出的 新的一种基于Java技术
36、的应用程序发布技术, JDK1.4.2以上版本因为JRE内部已经带JWS, 就不必另外下载了。用户可以用Java Web Start在网页上单击一个链接来起动Java应 用程序,比如电子表格程序或Internet聊天 客户,而不用经过复杂的安装过程。 7.2 Java Web Start 65 v图形是一种重要的媒体,它带来的信息比文 本多,且生动直观。Java的图形处理能力是 通过java.awt包中的Graphics,Font,Color 等类表现出来的。 7.3 2D图形图形 66 vjava.awt.Graphics类是所有不同设备的图形 上下文的抽象超类, 它定义了丰富的基本绘 图方
37、法,凡是与图形有关的程序都要引入这 个类。 7.3.1 Graphics类 67 v利用Graphics类提供的方法可以很方便地画 出线、矩形、圆和椭圆等图形。 7.3.2 绘制基本图形 68 v除了Graphics类外,AWT还提供了Font、 Color等类,Font类用于处理字体,Color用 于处理颜色。 7.4 字体与颜色字体与颜色 69 v图形的一个组成部分是字体,采用不同的字 体显示信息,可以增添图形的美观,Java对 字体的支持能力由java.awt包中的Font类和 FontMetrics类来实现。 v Font对象可用来控制当前的字体、风格及 大小,如果要得到字体尺寸的更详
38、细的数据, 可以用FontMetrics类的各种方法,这里不再 作介绍。 7.4.1 字体 70 v颜色也是图形不可缺少的组成部分,Java用 java.awt.Color类定义颜色,使字体和图形 都可以带有五彩缤纷的外观。 v设置颜色时用Graphics类的setColor()方法, 参数引用上述静态变量,除了上述静态颜色 之外,还可以调用Color()构造方法创建新颜 色,只要给定不同的红、 绿、蓝参数即可, 参数值0-255。 7.4.2 颜色 71 7.5 图像 v图像(Image)是多媒体信息中一种重要的媒体, 它比用线条构成的图形带来的信息量更大。 目前在WWW上支持的图像文件格式
39、有许多 种,如 .gif,.jpg,.bmp,.tga,.ppm,.tif(f) 等等。Java支持最通用的两种图像格式: GIF(.gif) 和JPEG(.jpg)。 72 vJava把图像也当作对象处理,所以装载图像 时要首先定义Image对象,其格式为: v Image imageName; v然后要用getImage()方法把Image对象和图像 文件联系起来。 7.5.1 装载图像 73 v装载图像完成后就可以显示在屏幕上了。 Graphics类的drawImage()方法可以画出图像, 它有几种重载方法,最简单的一种是: v drawImage(Image im,int x,int
40、 y, ImageObserver observer) 7.5.2 显示图像 74 vGraphics类中有一个copyArea()方法,可以 将屏幕中的某一区域拷贝到另一区域。其格 式为: v copyArea(int x,int y,int width,int height,int dx,int dy) v前两个参数是区域左上角座标,中间两个是 区域的宽与高,dx表明区域向右移多少点, dy表明区域向下移多少点。若为负数则向反 方向移,即向左向上移。 7.5.3 拷贝图像 75 v目前在Internet上支持的声音文件格式有许多 种,常见的 有.wav,.au,.mod,.mid,.snd
41、,.voc 等, 一般由不同的声音演奏程序来演奏这些不同 格式的声音文件。若要用Java程序来演奏, 则这些格式必须用声音格式转换程序转换为 Sun .au格式,因为目前Java的应用编程接口 仅支持一种声音格式: 8位,law,8000Hz, 单通道的 .au 文件。 7.6 声音声音 76 v在Applet类中有两个与声音有关的方法: v 1. getAudioClip(URL),或 getAudioClip(URL,String); v 2. Play(URL),或Play(URL,String); v 在AudioClip接口中有三个方法: v 1. play(),演奏一次 v 2.
42、loop(),反复演奏 v 3. stop(),停止演奏 77 v动画(animation)是指活动的图形或图像,它 与影像(video)不同,video是播放视频信号而 得到的电视画面,而动画是顺序播放一序列 静止画面,这些画面看起来相同,但有细微 差别, 它们连续不断地显示就产生运动的视 觉效果。Java目前还没有支持video的能力, 但可以支持动画的播放。 7.7 动画动画 78 7.7.1 简单的多线程动画 vapplet的init()方法定义了字体显示的初始位 置在窗口右边,start() 方法创建一个Thread 对象,并起动线程。线程体run()方法用一个 无限循环不断修改x座
43、标,若x 到了窗口左边, 可将它重新设置到窗口右边,修改完后调用 repaint() 方法重画字体,并调用sleep()方法 让线程休眠,使画面静止一段时间。paint() 方法是用drawString()方法在给定x,y座标 处输出字符串,线程体每次调用repaint()使 paint()方法得以执行。 79 7.7.2 改进动画效果的方法 v为什么动画画面会闪烁呢? 这是因为线程体 调用了repaint()方法,该方法自动调用 update()方法清除屏幕,update()方法又自动 调用paint()方法画新画面,如果一抹一画的 速度不够快,对人的视觉就产生了闪烁现象。 80 v如果用户
44、想中断动画循环,可在动画演示程 序中加入控制组件。比如加入鼠标按下事件, 在mouseDown()事件处理方法中控制线程的 启停。 7.7.3 增加控制组件 81 7.7.4 较完善的动画程序 v本例采用双缓冲区技术显示动画,10幅图像 放在图像数组images10中,以计算好的间 隔显示下一图像,直到10幅图像全部显示完。 用户可以用鼠标控制动画的启停。 82 7.8 Java 插件插件 v Java 插件(Plug-in)使得符合Java SE平台6规 范的小应用程序可以运行在Mozilla和Internet Explorer浏览器中,Java 插件是平台6 JRE/JDK的一部分。Jav
45、a 插件也支持部署 JavaBeans构件。 83 7.9 部署部署 v部署是关于如何用JAR文件包装应用程序和 小应用程序,并用Java Web Start和Java 插 件部署它们。 84 7.9.1 用Java Web Start部署应用程序 v如果希望应用程序单独运行在用户的桌面, 建议用Java Web Start部署。 v在Java 1.4.2版以后,Java Web Start是JRE 的一部分,用户不需要单独安装它。 85 7.9.2 用Java 插件部署小应用程序 v如果希望应用程序运行在浏览器中,或应用 程序与网页内容紧密集成,建议用Java 插件 部署小程序。 86 Ja
46、va技术及其应用技术及其应用 第第8章章 JDBC与数据库与数据库 应用应用 87 v JDBC (Java Data Base Connection)是 Java语言的 SQL(Structured Query Language,结构化查询语言)数据库访问接 口,可以访问任何装有Java虚拟机平台中的 表格状数据,特别是关系数据库。JDBC使我 们可以连接数据库,发送查询和更新语句到 数据库中,存取和处理数据库返回的查询结 果。 88 8.1 JDBC结构结构 vJDBC API支持两层和三层架构处理模型来访 问数据库。 v在两层架构模型中,Java小程序或应用程序 直接访问数据源,要求JD
47、BC驱动程序可以与 特定的数据源通信。 v在三层架构模型中,用户命令提供给中间层, 然后再送到数据源。数据源处理完命令后将结 果返回中间层,再传给用户。 89 v第一步先实例化一个DriverManager对象,连 接数据库驱动程序,登录数据库。第二步实例 化一个Statement对象,将SQL语言查询带到 数据库。第三步ResultSet对象,获取查询结 果,并执行一个while循环,取出结果并显示。 8.2 数据库连接原理数据库连接原理 90 v1.加载驱动程序 v与数据库建立连接的第一步就是要加载相应 的驱动程序。 v2.创建数据库URL v在JDBC中,我们是通过特定的URL来标识数
48、据库. 8.2.1 与数据库建立连接 91 v3.建立连接 v一旦我们选择好某个数据库之后,就可以 建立Connection对象建立连接. v4.关闭连接 v对于任何一个连接,当不再对数据源进行 任何操作时,应该调用close()方法将其关 闭,以释放所占用的资源。 92 v在建立好连接之后,我们就可以利用 Connection类对象对数据库进行各种SQL操 作了。先介绍不带参数的简单SQL语句操作 (包括查询和更新),与后面将提到的存储 过程操作会有所不同。 8.2.2 基本的数据访问 93 vJDBC提供了三种MetaData接口,分别是 ResultSetMetaData、Databas
49、eMetaData 和ParameterMetaData,其中, ResultSetMetaData对象提供的是与特定 ResultSet对象中的属性列相关的信息, DatabaseMetaData对象提供的是与数据 库或者DBMS相关的信息, ParameterMetaData对象提供的是与 PreparedStatement对象的参数相关的信 息。 8.2.3 元数据 94 vPreparedStatement接口扩展了之前介绍的 Statement接口,而且在PreparedStatement 对象中可以包含经过预编译的SQL语句,也 就是说,SQL语句在被数据库的编译器编译 之后,执行
50、代码会被缓存下来,那么在下次 调用时,如果是相同的SQL语句就不需要再 编译了,直接将参数传入到执行代码中就会 得到执行(相当于一个函数)。 8.2.4 PreparedStatement 95 v联接(join)是关于多个表的数据库操作,是通 过各表的共享数据进行联接的。 8.3 联接联接 96 8.4 事务事务 v事务(transaction)是数据库操作的基本逻辑单 位。通常情况下,DBMS总有若干个事务在 并发地执行,并且,这些事务有可能并发地 存取相同的数据。因此,为了保证数据的完 整性和一致性,所有与JDBC相符的驱动程序 都必须支持事务管理。 97 v在JDBC中,事务操作的默认
51、方式是“自动提 交”。在这种方式下,当执行完某一项更新 操作后,系统将自动调用commit()方法,即 每一项更新操作都被当作独立的事务执行。 因此,在进行完该项更新操作之后,其它更 新操作之前,如果应用程序或系统发生了任 何异常情况,都不能撤销之前操作的结果。 8.4.1 自动提交方式 98 v事务隔离级别是用来指定哪些数据对事务中 的语句是可视的。通过定义对同一目标数据 源执行的事务之间的可能交互作用,我们将 可以得到事务并行访问的访问级别。 8.4.2 事务隔离级别 99 v保存点(Savepoint)提供了回滚部分事务 的机制。保存点是检查点,当事务操作发生 异常时,我们可以通过设置保
52、存点,将事务 回滚到保存点并从该点继续执行,从而不至 于丢弃整个事务。 8.4.3 保存点 100 v存储过程(Stored Procedure)是指一组为了完 成特定功能的SQL语句集,经编译后存储在 数据库中,用户可以通过指定存储过程的名 字并给出参数(如果该存储过程带参数)来 执行它。 8.5 存储过程存储过程 101 v在应用程序中,要想调用存储过程,首先得 创建CallableStatement对象。 CallableStatement接口是JDBC 2.0 API中提 供的用来访问存储过程的一个非常重要的接 口,它是PreparedStatement接口的子类。 8.5.1 创建C
53、allableStatement对象 102 vCallableStatement 对象可以接收三种类型的 参数: v(1)IN(输入)参数 v(2)OUT(输出)参数 v(3)INOUT(输入输出)参数 8.5.2 设置参数 103 v存储过程的访问处理与PreparedStatment是 相同,请参见之前的介绍。 8.5.3 存储过程的访问 104 v设计完整的JDBC应用要考虑几个方面。首先 是创建表,然后插入数据到表中并显示查询 结果,随后可以创建相关的表,试图用join操 作联接多个表并查询,更复杂的操作是利用 事务或PreparedStatement对象来实现。 8.6 JDBC应
54、用设计应用设计 105 v如果用户希望将数据显示在网页上,可以用 applet实现,即要让applet直接从数据库取 数据。applet代码包括JDBC代码、运行 applet的代码和显示数据库结果的代码。 8.7 用用Applet访问数据库访问数据库 106 Java技术及其应用技术及其应用 第第9章章 JavaBeans及及 组件应用组件应用 107 vJavaBeans是用Java语言编写的可移植和平 台无关的组件模型,开发者可以利用它写可 复用组件,我们可以用JavaBeans API 创建 这些组件,用兼容工具把这些组件结合到小 程序和应用程序中。JavaBeans组件叫做 bean
55、,它们是可改变和可定制的,通过工具 可以定制它们并保存备用。本章将介绍 JavaBeans的基本概念,它们的属性,如何 设计和使用JavaBeans。 108 9.1 JavaBeans概念概念 vJavaBeans体系结构建立在组件模型上,组件 是自包含、可复用的软件单元,通过可视化应 用建造工具可以把它们组装到组合组件、小程 序、应用程序和servlet中。JavaBeans组件叫 做bean,在建造工具的设计模式下,我们可 以用bean的属性窗口来定制bean,再通过可 视化处理保存bean。 109 v设计简单的包括:创建bean,编译bean,使 用bean,用GUI建造器装载bea
56、n等。 9.2 设计简单的设计简单的bean 110 vbean必须有一个公共类,必须有一个无参数 构造方法。bean可以实现Serializable 接口或 Externalizable接口,用于保证持续状态。 bean通常有get()方法和set()方法,使其属性 可以由建造工具可视化读写。bean也可以有 事件,用注册方法加监听者。 9.2.1创建bean 111 v由于bean是可视化组件,我们用Swing的 JFrame来使用MyBean。如果要用可视化建 造工具使用bean,则要另外安装这类工具, 这里不再介绍。 9.2.2使用bean 112 v一个bean的属性可以影响它的行为
57、和外 观,如颜色、标签、字体、大小等。 bean的属性有可写的、只读和隐藏的几 种,属性类别有简单属性、索引属性、 关联属性、约束属性等。JavaBean技术 最吸引人的特点就是它支持可视化地编 辑bean属性,不过需要安装可视化建造 工具。 9.3 属性属性 113 v指bean的属性具有单个值,它的改变独立于 其他属性的变化。用getXXX() and setXXX () 方法可以加简单属性到bean中,这些方法名 可以帮助可视化建造工具确定bean属性。 9.3.1 简单属性 114 v指bean的属性支持一定范围的值,而不是单 个值。 9.3.2索引属性 115 9.3.3关联属性 v
58、指bean的属性发生变化时,产生提示发送给 其他bean。关联属性支持 PropertyChangeListener,当关联属性改变 后,变化通知将送到感兴趣的监听者。我们 需要为PropertyChangeListener提供事件监 听者注册方法,并调用propertyChange()方 法触发PropertyChangeEvent事件。 116 v指bean的属性发生变化时,另一个要bean进 行验证,如果认为不合适可以拒绝该变化。 若bean支持VetoableChangeListener和 PropertyChangeEvent,而且该属性的set() 方法抛出PropertyVeto
59、Exception,就说该 bean属性受约束。约束属性比关联属性复杂, 因为它的监听者是“否定者”。 9.3.4 约束属性 117 vJavaBeans体系结构使用的事件模型是委托 (delegation)模型,包括三部分:源、事件、 监听者。事件的源是产生或触发事件的对象, 源必须定义它将触发的事件,以及注册事件 监听者的方法。监听者是个对象,表明它将 注意特定类型的事件,监听者用事件源定义 的方法注册事件。 9.4 事件事件 118 vbean的属性、域、状态信息在存储器保存 和取出时具有持续性(persistence),组件模 型为持续性提供一种机制,使组件状态能存 入一个不易变的地方
60、供以后取回。这种可持 续机制叫序列化(serialization),对象序列化 机制把对象转为数据流,写入存储器。使用 bean的小程序、应用程序或工具可以通过 反序列化重构对象,使对象恢复原有状态。 9.5持续持续 119 v自省(Introspection)也可以叫自检,这是一个 自动过程,分析bean的设计模式,发现bean 的属性、事件和方法。 9.6 自省自省 120 vBeanContext是一个包含环境,使Java开发 者可以逻辑地组织一组相关的JavaBeans到 一种语境中,让bean彼此知道并交互。 9.7 BeanContext API 121 vJSP(Java Ser
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PE焊工职业考核考试题(含详细答案)
- 2026年焦炉试题及答案
- 化学实验室安全操作规程
- 原醛症螺内酯血钾监测频次标准化规范共识
- 2025-2026学年陕西省咸阳市初中数学七年级期末上册高分重点黑金模拟题(附答案)
- Oracle数据库面试题及答案(真实面试版)
- 房颤消融术后远程心电监测应用共识
- 景区攀岩运维员安全操作规程
- 2026年内蒙古自治区检察系统聘用制书记员招聘笔试试题及答案
- 老年抑郁筛查路径中国专家共识(2026版)
- 2026中国智能智能工厂物流系统市场需求现状及投资评估规划分析研究
- TD/T 1001-2012地籍调查规程
- JG/T 298-2010建筑室内用腻子
- 秋冬季节老年人疾病预防指南
- 《森林生态恢复》课件
- 人教版数学六年级上册《节约用水》课件
- 护理生活自理能力评分量表
- 国家电网调度系统重大事件汇报规定
- 【粤教版】三年级全一册《劳动与技术》第3单元 活动3 《做汤圆》 课件
- JTG-QB-003-2003公路桥涵标准图钢筋混凝土盖板涵
- 建筑施工QC小组提高隧道光面爆破开挖一次成型率成果汇报
评论
0/150
提交评论