NEC手机JAVA中级讲座-第四讲 动画
Java全套课件
将对象的属性和行为封装在类内部,提高数据 的安全性。
继承的应用
通过继承实现代码的复用,建立类之间的层次 关系。
多态性的应用
通过方法重写和接口实现,实现同一行为在不同对象中的不同表现。
抽象类和接口实现
01
抽象类的定义和使 用
抽象类是一种特殊的类,不能被 实例化,只能作为其他类的基类 。
02
MyBatis操作流程
配置MyBatis、创建 SqlSessionFactory、获取 SqlSession、获取Mapper、执行 操作、关闭资源。
MyBatis常用接口和类
包括SqlSessionFactoryBuilder、 SqlSessionFactory、SqlSession 、Mapper等。
通过Spring管理MyBatis的SqlSessionFactory和事务,实现与 Spring的整合。
Spring整合JPA
使用Spring Data JPA简化JPA操作,同时整合数据源和事务管理。
05 Web应用开发进 阶
Web前端技术简介
HTML/CSS/JavaScript基础
学习网页的基本结构、样式和交互效果,掌握常用的HTML标签、CSS选择器和 JavaScript语法。
开发工具的选择与使用
介绍常用的Java开发工具,如Eclipse、IntelliJ IDEA等,并指导学 员进行安装和使用。
第一个JavБайду номын сангаас程序
1 2
编写第一个Java程序
引导学员编写第一个简单的Java程序,体验Java 编程的乐趣。
程序结构与语法解析
详细讲解Java程序的基本结构、语法规则以及编 码规范。
java继承ppt课件
通过继承,子类可以重用父类的代码,避 免了重复编写相同的功能,提高了代码的
复用性。
组织代码结构
通过合理的继承层次结构,可以清晰地表 达类之间的层次关系和依赖关系,使代码
结构更加清晰和易于维护。
多态性
继承是实现多态的重要手段,通过继承, 子类可以覆盖父类的方法,实现不同的行 为,增强了程序的灵活性和可扩展性。
如果父类成员没有访问修饰符 ,则默认为包级别访问,子类
只能在该包内访问。
继承的继承方式
单继承
一个子类只能继承一个父类。
实现多接口
一个类可以实现多个接口,实现多接口可以实现多个方法的重写 。
接口继承
一个接口可以继承另一个接口,子接口继承父接口的方法。
03 Java继承的实现
父类的构造方法
01
父类的构造方法在子类中默认被继承,子类可以直 接使用父类的构造方法来初始化父类的属性。
02
如果子类没有显式地定义构造方法,则编译器会自 动调用父类的无参构造方法。
03
如果父类没有定义无参构造方法,子类必须显式地 调用父类的有参构造方法。
子类的构造方法
1
子类的构造方法可以显式地调用父类的构造方法 ,使用super关键字指定要调用的父类构造方法 。
2
子类的构造方法可以同时执行自己的初始化代码 。
3
子类的构造方法可以定义自己的属性和方法,以 实现更具体的功能。
子类对父类方法的覆盖
子类可以定义与父类同名 的方法,以覆盖父类的方 法。
子类可以通过@Override 注解来表明自己覆盖了父 类的方法,以提高代码的 可读性。
ABCD
当子类对象调用该方法时 ,将执行子类中的方法, 而不是父类中的方法。
java基础ppt课件
03
封装
将对象的属性和方法封装 在类中,隐藏内部实现细 节,仅通过对外提供的接 口进行访问和操作。
继承
子类可以继承父类的属性 和方法,实现代码复用和 扩展。
多态
子类可以重写父类的方法 ,实现同一方法在不同对 象上的不同表现。
接口与抽象类
接口的定义
接口是一种引用类型,用于定义一组 方法的规范,但不包含方法的实现。
抛出自定义异常
在方法中,可以使用throw语句抛出自定义异常。抛出异常时,需要创建一个异 常对象并将其抛出。
异常处理的最佳实践
尽量避免异常
合理使用try-catch语句
保持异常的原子性
提供有意义的错误信息
应该尽量编写健壮的代码,避 免出现异常。例如,进行空值 检查、范围检查等。
不要过度使用try-catch语句, 只在必要时使用。对于可以预 见的异常情况,应该尽量在代 码中处理,而不是依赖于trycatch语句。
可以使用多个catch语句来处理不同类型的异常 ,每个catch语句处理一种特定的异常类型。
自定义异常
创建自定义异常类
可以通过继承Exception类或RuntimeException类来创建自定义异常类。继承 Exception类创建的是检查型异常,而继承RuntimeException类创建的是非检查 型异常。
丰富的API
Java语言提供了大量的API, 涵盖了IO、网络编程、数据库 操作、图形界面开发等方面。
Java语言的应用领域
Web开发
Java语言在Web开发领域有着广泛的应用 ,如Servlet、JSP、Struts等框架。
游戏开发
Java语言也可以用于游戏开发,如 Minecraft等游戏就是使用Java语言开发 的。
java完整课件
Java语言的历史与发展
01
介绍Java语言的起源、发展历程以及在不同领域的应用。
Java语言的特点
02
详细阐述Java语言的跨平台性、面向对象、安全性等特点。
Java与C的对比
03
分析Java与C在语法、编程范式、内存管理等方面的异同点。
4
开发环境搭建
2024/1/26
JDK的安装与配置
集合框架中的常用接口和类
Java集合框架中常用的接口包括Collection、List、Set和Map,常 用的实现类包括ArrayList、LinkedList、HashSet、TreeSet和 HashMap等。
24
List接口及其实现类
2024/1/26
01
List接口的定义和特点
List接口是Java集合框架中的一个重要接口,它表示一种 有序的集合,可以包含重复元素。List接口提供了丰富的 操作方法来管理元素,如添加、删除、获取和遍历等。
字节流与字符流
学习使用字节流和字符流进行文件的读写操作,理解其使用场景和区 别。
缓冲流
掌握缓冲流的使用,理解其在提高文件读写效率方面的作用。
对象序列化与反序列化
了解对象序列化和反序列化的概念,学习使用ObjectOutputStream 和ObjectInputStream进行对象的写入和读取。
20
Runnable接口是Java中另一种实现多线程编程的方式,它定义了一个run()方法,用于指定线程要执行的任务。实现 Runnable接口的类可以创建多个实例,并且每个实例都可以作为一个独立的线程运行。
Thread类与Runnable接口的比较
Thread类和Runnable接口都可以实现多线程编程,但它们的使用方式和适用场景略有不同。Thread类 适合于简单的多线程任务,而Runnable接口更适合于复杂的、需要共享资源的多线程任务。
JAVA自学教程(完整版)PPT课件(2024)
二分查找
针对有序数组,每次取中间元 素与目标元素比较,缩小查找 范围
12
03 面向对象编程基础
2024/1/27
13
类与对象的概念
类的定义
类是对象的模板,它定 义了对象的属性和方法 。
2024/1/27
对象的概念
对象是类的实例,具有 类定义的属性和行为。
类与对象的关系
类是对象的抽象描述, 而对象是类的具体实现 。
2024/1/27
32
Socket通信原理及示例
Socket通信原理
理解Socket通信的基本原理,掌握Socket 类和ServerSocket类的使用。
TCP编程
学习基于TCP协议的Socket通信,实现客户 端与服务器之间的数据传输。
多线程处理
掌握多线程在Socket通信中的应用,提高服 务器的并发处理能力。
TreeSet类的特点和使用
TreeSet是Set接口的另一个常用实现类,它基于红黑树实 现。TreeSet会对元素进行排序,因此它适用于需要排序的 场景。
26
Map接口及其实现类
01
Map接口的定义和特 点
Map接口表示一种键值对的映射关系 。Map中的每个元素都包含一个键和 一个值,键在Map中是唯一的。
学习ReentrantLock锁的使用,了解 公平锁与非公平锁的区别。
2024/1/27
等待/通知机制
掌握Object类的wait()、notify()和 notifyAll()方法的使用,实现线程间 的通信。
死锁与避免
了解死锁的概念及产生条件,学习如 何避免死锁的发生。
31
网络编程基础
网络编程概述
ArrayList类的特点和使用
java入门教程(一)PPT课件
运算符与控制流语句
运算符
Java支持多种运算符,如算术运算符(+、-、*、/、% )、关系运算符(==、!=、>、<、>=、<=)和逻辑 运算符(&&、||、!)等。
控制流语句
Java提供了多种控制流语句,如if语句、switch语句和 循环语句(for、while、do-while)等,用于控制程序 的执行流程。
1995年,Java正式发布,并成为一种独立的开发 平台。
2004年,Java SE 5.0版发布,引入了新特性如泛 型、for-each循环和自动装箱等。
java的应用领域
Web应用程序 开发
Java的Web开发技术, 如Servlet和JSP等,可 以轻松构建高效的Web 应用程序。
企业级应用
05
java开发环境配置
jdk的安装与配置
总结词
JDK是Java开发的核心工具包,需要安装并正确配置。
详细描述
JDK是Java Development Kit的缩写,是Java开发的核 心工具包,需要从Oracle官方网站下载并安装。在安装 过程中,需要选择适合自己系统的版本,并按照提示完 成安装过程。安装完成后,需要通过环境变量设置,将 JDK添加到系统路径中,以便在命令行或者其他IDE中直 接调用Java命令。
2023
java入门教程(一)ppt课件
目录
• java概述 • java基础知识 • java核心技术 • java常用类库 • java开发环境配置 • java入门案例——简易学生信息管理系统的实现
01
java概述
java的定义与特点
1
于开发跨平台应用程序和服务端应用程序等。
JAVA自学教程(完整版)PPT课件
而在Java语言中,Java自带的虚拟机很好地实现了跨平台 性。Java源程序代码经过编译后生成二进制的字节码是与平台 无关的,但是可被Java虚拟机识别的一种机器码指令。Java虚 拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使 得Java语言具备跨平台性。
2. 面向对象
面向对象是指以对象为基本粒度,其下包含属性和方法。 对象的说明用属性表达,而通过使用方法来操作这个对象。面 向对象技术使得应用程序的开发变得简单易用,节省代码。 Java是一种面向对象的语言,也继承了面向对象的诸多好处, 如代码扩展、代码复用等。
图1.8 Applet显示“Hello World!”
习题
1. 简述Java的特点。 2. 简述Java的分类情况。 3. 进行Java环境的安装和配置。 4. 编写应用程序,屏幕上输出“欢迎来到Java世界!”。 5. 编写Applet,输出“欢迎来到Java世界!”。
第2章 Java基本语法
1.4 JDK包的下载与安装
Java Develop Kit简称为JDK,是Sun公司免费发行的软件包, 可以从Sun网站免费下载,也可以从其它国内 地址下载。JDK版本从1.02开始,目前版本发展到1.4,其中高 级版本对低级版本实现向下兼容。运用这个软件包,就可以对 Java源程序进行编译和运行。本书中下载使用的JDK包为j2sdk1_4_0_012-windows-i586.exe。 下载后双击图标,即可进行安装, 默认的安装目录为C:\j2sdk1.4.0_01。本书作者将安装目录改为 D:\j2sdk1.4.0_01。
图1.4 编辑lib变量
选中path变量,单击“编辑”按钮,弹出标题为“编辑用 户变量”的对话框,如图1.5所示。在变量值一栏的最后添加 “; D:\j2sdk1.4.0_01\bin”,“;”表示与前面的各项隔开,后面的 路径是JDK包的安装路径下的bin目录。图1.5为作者修改path变 量的情况,注意你的安装路径可能与作者的有所不同,同样要 以你的安装路径为基准进行修改。
java培训ppt课件全套课件ppt
Java中的异常处理机制包括捕获异常(Catch)、抛出异常(Throw)和声明异常(Throw)。
Java多线程编程
新建、就绪、运行、阻塞、终止。
线程具有5种状态
字符串编码
String类支持多种编码格式,如UTF-8、GBK等,可以方便地进行字符串的编码和解码。
ArrayList类是一个动态数组,可以根据需要自动增长和缩小。
动态数组
常用操作
线程安全
ArrayList类提供了添加、删除、查找等常用操作的方法。
ArrayList类不是线程安全的,如果需要在多线程环境下使用,可以考虑使用Vector类。
Java语言特点
Web开发、移动开发、大数据、游戏开发等。
Java应用领域
03
常用工具
Git、Maven、Gradle等在Java开发中的使用。
01
JDK安装与配置
下载和安装JDK,配置环境变量等。
02
集成开发环境(IDE)
Eclipse、IntelliJ IDEA等常用Java IDE的介绍和选择。
Java面向对象编程
面向对象编程(OOP)
一种编程范式,通过使用对象来设计和实现软件系统。
对象
现实世界中的事物在计算机中的表示,具有状态和行为。
类
对象的抽象,定义了对象的属性和方法。
实例
类的具体实例,具有类定义的属性和行为。
02
03
04
01
抽象
定义抽象类或抽象方法,用于规定接口和行为,但不实现具体实现细节。
NEC手机JAVA中级讲座-第二讲 MIDP讲座
第二讲制作应用程序— UI 1 —用户接口的基本设置 (2)接下来需要说明的是用户接口的C LASS I NTERFACE L IST。
(2)高级API和低级API (3)Displayable和Display (3)Image (4)高级API (4)高级API的UI(S CREEN子类) (4)List (4)TextBox (5)Alert (6)Form (7)高级API的UI(I TEM子类) (7)Item (7)ChoiceGroup (8)TextField (8)ImageItem (9)Gauge (9)StringItem (10)DateField (10)事件操作 (11)Command (11)CommandListener (12)ItemStateChanged事件 (12)ItemStateListener (12)制作应用程序! (13)简单计算应用程序的制作方法 (13)制作应用程序的大框架 (13)制作画面 (14)主题画面 (14)应用程序说明画面 (15)主画面 (15)演算符选择画面 (16)应用程序开机画面 (16)命令处理和待机迁移 (16)从主题画面进入应用程序说明画面 (16)从应用程序的说明画面进入主画面 (17)从主画面进入运算符选择画面 (17)从运算符画面进入主画面 (17)计算处理 (17)运算符的选择 (19)实际操作 (20)下一讲 (21)上一讲主要讲如何构筑制作N800的JAVA应用程序的开发环境。
这一讲则主要讲述如何利用MIDP的高级API制作简单的计算应用程序。
用户接口的基本设置接下来需要说明的是用户接口的Class Interface List。
⏹ 高级API 和低级APIMIDP 用户接口是由高级API 和低级API 构成。
高级API 侧重点放在移植性上,由于高级API 高度抽象化所以能实现较高的移植性。
高级API 只用极少的component looking 和feeling 就能控制全局,但不能定义component 的美观。
viewme-um004_-zh-e说明书
2024年度Java语言ppt课件(完整版)
JDBC数据库连接技术
JDBC基本概念
JDBC(Java Database Connectivity)是Java语言中用 于访问关系型数据库的标准API。 它提供了一组用于连接数据库、 执行SQL语句和处理查询结果的 接口和类。
JDBC驱动程序
JDBC驱动程序是实现JDBC API 的数据库访问软件,用于建立 Java应用程序与数据库之间的连 接。不同的数据库厂商会提供不 同的JDBC驱动程序,以支持对自 己数据库的访问。
2024/3/23
29
Spring框架概述及核心思想
2024/3/23
01
Spring框架是一个轻量级的控制反转(IoC)和面向切面(AOP)的 容器框架。
02
Spring框架的核心思想是降低耦合度,提高系统的可维护性和
可扩展性。
Spring框架提供了丰富的功能,如事务管理、Web MVC、数
03
要点二
Servlet生命周期
Servlet的生命周期包括加载、初始化 、处理请求、销毁四个阶段。在Web 应用启动时,Servlet被加载并初始化 ,然后一直驻留在内存中等待处理请 求,直到Web应用停止或被卸载时, Servlet才会被销毁。
要点三
Servlet API
Servlet API是一组Java接口和类,用 于支持Servlet的开发和运行。它提供 了处理HTTP请求和响应、管理会话 、读写Cookie等功能。
Thread类
Java中的线程类,可以通过继承 Thread类并重写run()方法来实现多线
程程序。
Callable接口
2024/3/23
与Runnable接口类似,但Callable接 口可以返回执行结果并且可以抛出异
用手机入门J2ME
[J2ME预备知识]我会的东西也不多。
但我会把我会的东西教给你。
如果有说的不好的地方,也请高手指出,不吝赐教。
万分感谢。
J2ME,一般的书上都会有一大堆的名词,比如1995年sun公司创建的java语言的三大分支之一,适用于嵌入式设备,J2ME配置分为CDC和CLDC,CLDC上层的重要简表是MIDP 等等。
其实我们这里学习的J2ME简单的来说,就是手机jar软件。
比如QQ,UC浏览器,Classtraslator,Classeditor,minicommander等等。
不过对于UC和QQ这种大型软件,是公司开发的。
个人开发周期太长了。
通常我们改软,就是在别人制作好的软件的基础上修改。
(改软最高技术个人觉得是,电脑端是halo,手机端是jamsin,Disjamsin的字节码,学习JVM代码)而J2ME就是制作软件。
在新手阶段,CLDC,MIDP,Java历史,发展等等我们都不用了解太多。
我们可以从简单的源码开始学习。
J2ME的学习不象一般的改软,几天之内就能学会一种改软方法。
J2ME的学习,通常以月为单位。
一,两个月才会有成效。
同时学习J2ME也很苦。
不象大家想的那样,挥手就可以做出一个软件。
很多时候调试一个软件的一个很小的bug都得花上很长的时间。
J2ME大部分时间不是在开发软件,而是在调试软件。
也只有在调试时,发现错误,才能提高我们。
所以是否学习J2ME希望大家慎重的考虑。
如果兴趣不是很大,或者不能坚持下去,建议不要学。
因为花了大量的时间,结果只会一点,半途而废,还不如不学。
其实不会有时也是一种幸福。
还有,总是听别人说,我英语不好,不适合学习J2ME。
我可以很明确的告诉大家,在新手阶段,以及编程爱好者阶段,J2ME的开发和英语一点关系都没有。
到是和数学的逻辑思维有关系。
当然,如果后期想做个合格的程序开发员,英语还是得补的。
毕竟“出来混,迟早都要还”。
当然,后期的英语,以及基础的知识由大家自己补,这系列教程都是入门教程,只是带大家入门的。
2024年度JAVA精品课程
02 03
Spring AOP原理与应用
详细介绍Spring AOP的核心概念和原理,包括切面、通 知、连接点等,并通过实例演示如何运用AOP实现日志记 录、事务管理等功能。
运行时注解解析
在运行时解析注解信息,实现动态配置和代码生成。
21
常见设计模式解析
单例模式
确保一个类只有一个实例,并提供一个全 局访问点。
观察者模式
定义对象间一对多的依赖关系,当一个对 象状态改变时,所有依赖于它的对象都会
得到通知并自动更新。
2024/2/2
工厂模式
创建对象的接口,让子类决定实例化哪个 类。
集合的排序和查找
使用Collections工具类对集合进行排序和查 找操作。
17
04
高级特性及设计模式应用
2024/2/2
18
泛型编程技术实践
泛型类、接口和方法的使用
创建可重用的代码,支持多种数据类型,提高 代码灵活性。
类型擦除和边界
理解Java泛型在编译期的类型检查和运行期的 类型擦除,确保类型安全。
2024/2/2
5
适用人群及就业前景
适用人群
本课程适合零基础的初学者、有一定编程基础希望提升JAVA技能的开发者以及 希望从事JAVA开发相关工作的人员。
就业前景
随着信息化时代的快速发展,JAVA开发工程师需求量不断增加,具有广阔的就 业前景。学员通过本课程的学习,可以胜任Web开发工程师、移动应用开发工 程师、大数据开发工程师等职位。
2024/2/2
SQL语句执行
《Java讲解方法》课件
20多年来,Java不断发展和完善,广泛应用于企业级应用、移动应用、游戏开发等领域。
Web开发
Java的Servlet和JSP技术使得Java成为Web开发领域的领先者。
企业级应用
Java的EJB和J2EE技术使得Java成为构建企业级应用的理想选择。
数据类型
变量是用来存储数据的标识符。在Java中,变量名必须以字母、美元符号($)或下划线(_)开头,后面可以跟字母、美元符号($)、下划线(_)或数字。变量名区分大小写。
变量
类与对象:类是对象的模板,对象是类的实例。类定义了对象的属性和方法。对象的属性在创建对象时初始化,方法通过对象调用执行。
06
TreeSet:基于树结构实现,元素自动排序,但插入、删除操作速度较慢。
它允许使用键来查找对应的值。
HashMap:基于哈希表实现,提供了快速的查找操作。
TreeMap:基于树结构实现,键自动排序,但查找操作速度较慢。
Map接口是Java集合框架中的一种接口,表示键值对映射的集合。
Map接口的主要实现类有HashMap、LinkedHashMap和TreeMap等。
03
Java提供了Executors类和ThreadPoolExecutor类等工具来创建和管理线程池。
04
使用线程池可以降低系统开销,提高线程的利用率和系统的吞吐量。
Java网络编程
03
Socket编程示例
通过一个简单的聊天室程序示例,演示了如何使用Socket编程实现客户端和服务端的通信。
Java常用类库
字符串比较
String类提供了比较两个字符串的方法,如equals()和compareTo()。
javaPPT课件
微服务架构
解释微服务架构的原理和在Spring Boot中的 应用,包括服务注册与发现、负载均衡等。
THANKS
感谢观看
1995年,Sun Microsystems公 司正式发布了Java 1.0,标志着 Java语言的诞生。随后,Java经 历了多个版本的迭代和更新,逐 渐发展成为一种功能强大、应用 广泛的编程语言。
目前,Java已经成为全球最受欢 迎的编程语言之一,广泛应用于 企业级应用、Web开发、移动 开发、大数据处理等领域。
介绍Spring MVC的工作原理、核心组件以及常用注解。
Hibernate框架
Hibernate概述
简要介绍Hibernate的起源、 发展以及特点。
ORM原理
阐述对象关系映射(ORM) 的原理和Hibernate如何实现 ORM。
Hibernate核心 API
详细介绍Hibernate的核心 API,包括Session、 Transaction、Query等。
JavaBean技术
JavaBean定义
JavaBean是一种符合特定规范的Java类,用于封装多个属性及其操作,实现数据的传 输和共享。
JavaBean特性
JavaBean具有封装性、可重用性、可序列化等特点,支持事件处理机制和自定义属性 编辑器。
JavaBean在Web开发中的应用
JavaBean在Web开发中可用于封装表单数据、实现数据验证、处理业务逻辑等。通过 JSP或Servlet与JavaBean的交互,可以实现数据的传输和处理。
开发的主要编程语言。
Web开发
Java在Web开发领域也有广泛应用, 如Servlet、JSP等技术都是基于Java 实现的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四讲动画前言在前一讲中我们讲述了如何利用低级API制作图表应用程序的方法。
如果仅仅是图表内容的表示,那么在WEB上就可以用静止的页面表示。
但是在手机应用程序中表示的话,就能让图表内容具有动感。
这就是应用程序与WEB的区别,这也正是其优点所在。
在本讲中我们将进一步讲述如何在手机应用程序中制作动画,并详细介绍其具体操作方法。
动画基本上,动画能够表现出文字、图形、图片等的描绘位置和画面自身的连续变化。
目前的程序中,按下按键,就会实行既定的方法。
直到实行完既定方法之后才能进行其他方法操作。
但是,表示动画过程中,不实行动画表示以外的方法就没有什么意义,因此应该有必要在表示动画的同时也可以实行其他的方法。
所以掌握线程和秒表技术的知识和应用是必不可少的。
接下来,我们将详细介绍线程和秒表。
⏹线程线程是执行程序的最小单位,用来执行Standalone的Java应用程序的main()方法。
同时,在进行复数处理时,由于复数使用线程所以能并列执行复数的处理。
使用这种线程的程序被称为“多线程程序”。
●线程的使用首先我们尽快学习怎样使用“线程”。
有两种方法能使用线程:Runnable接口的使用方法和Thread类的继承类的定义方法。
在此,我们使用前一个方法—实现Runnable接口的方法。
实现Runnable接口的类必须要覆盖run()方法。
覆盖的run()方法中记述了用线程执行的处理。
(ex. 1)ex. 1其次,使用以实行线程为目的的Thread类。
如下所示:用构造函数实现Runnable接口的类,将这一例子赋予自变量,用Thread对象的start()方法能够启动线程。
(ex. 2)ex. 2制作简单的动画实际上使用线程就能够承载简单的动画实例。
在下面的实例中,球从左向右运动。
(ex. 3)* 构造函数*/public MovingBall(){display = Display.getDisplay(this);canvas = new MovingBallCanvas();}/*** 运行时的处理*/protected void startApp() throws MIDletStateChangeException {display.setCurrent(canvas);}protected void pauseApp() {}protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}}import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;/***球飞出去的实例动画的canvas。
*/public class MovingBallCanvas extends Canvas implements Runnable{private int x;//球的X坐标/*** 构造函数*/public MovingBallCanvas(){Thread th = new Thread(this);th.start();}/*** 线程运行的处理*/public void run() {while(true){x += 3;//更改球的坐标repaint();//再次描绘try{Thread.sleep(100);//100毫秒待机}catch(InterruptedException e){}}}/*** 描绘方法*/protected void paint(Graphics g) {//使画面清晰g.setColor(255,255,255);//白g.fillRect(0,0,getWidth(),getHeight());//表示球g.setColor(255,0,0);g.fillArc(x,50,20,20,0,360);}}ex. 3依照paint方法中形成的g.fillArc(x,50,20,20,0,360),根据变量X,变化球的描画位置,在线程上所运行的変数run()方法中的while loop 上连续增加变量X的数值。
这样,球就可以从左向右运动了(図 1)。
図 1●线程的待机处理在上述的实例中用run()方法制作如下的待机处理。
如果没有这个待机处理,那么球就会以肉眼难以看见的速度从左向右快速飞行。
用Thread类的static方法sleep进行待机处理。
在自变量中待机时间以毫秒为计算单位。
(ex. 4)ex. 4如此例所示,处理和处理之间能够待机100毫秒,按另外观点看,与在100毫秒的定期间隔下运行处理是一样的。
定期间隔下的处理,使用名为秒表的类同样能够实现。
下面说明一下秒表。
⏹秒表由于JAVA是用定期的处理和指定时间来运行处理,所以具备秒表功能。
线程的处理运行是连续进行,不能只限于定期。
在指定时间下的处理或者进行定期的处理时,由于预先准备专用的方法,所以应用秒表非常便利。
●秒表的使用利用Timer类和TimerTask类能够使用秒表的功能。
在Timer类的例子中,登记了继承TimerTask类的类的例子,并设定了时间表。
于是,以设定在Timer类上的时间表为基础,在指定时间段和指定的时间点,继承TimerTask类的类 run()方法也将被呼叫出来。
(表 1)表 1Timer在Timer类中主要使用下面的方法。
・void schedule(TimerTask task,Date date)・void schedule(TimerTask task,Date date,long period)・void schedule(TimerTask task,long delay)・void schedule(TimerTask task,long delay,long period)・void cancel()用上面所说的schedule方法设定类和运行的时间表。
不设定第三个自变量period的情况下,在第二个自变量所指定的时刻,类只被运行一次。
设定period的情况下,从第二个自变量所指定的时刻开始period所设定的每个间隔(毫秒单位)中都会运行类。
另外,呼叫出cancel方法,则就会结束秒表程序。
TimerTaskTimerTask类是抽象类。
有必要定义继承了TimerTask类的类。
在所继承的类中必须覆盖抽象方法的run()方法,必须根据秒表的时间表记述所运行的处理。
在TimerTask类中主要使用如下的方法。
・abstract void run()・void cancel()按照Timer 类中所设定的时间表运行run()方法。
用cancel()方法能够结束任务。
在线程上安装的球运动的动画实例,在这里我们也可以使用秒表进行实例演示。
如下所示:(ex. 5)/*** 球飞出去的动画实例* 秒表版*/public class TimerMovingBall extends MIDlet {private Display display;private TimerMovingBallCanvas canvas;/*** 构造函数*/public TimerMovingBall(){display = Display.getDisplay(this);canvas = new TimerMovingBallCanvas();}/*** 运行时的处理*/protected void startApp() throws MIDletStateChangeException {display.setCurrent(canvas);}protected void pauseApp() {}protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}}import java.util.*;import javax.microedition.lcdui.*;/***球飞出去的实例动画的canvas。
*/public class TimerMovingBallCanvas extends Canvas {private int x; //球的x坐标private Image img;private Timer timer;private TimerTask task;/*** 构造函数*/public TimerMovingBallCanvas() {//读取画像try{img = Image.createImage("/back.PNG");}catch(Exception e){e.printStackTrace();}//Timer,TimerTask的设定timer = new Timer();task = new TimerMovingBallTask(this);timer.schedule(task, 100, 100); //从第101毫秒开始在每100毫秒运行任务}/***描绘方法*/protected void paint(Graphics g) {g.drawImage(img, 0, 0, Graphics.LEFT | Graphics.TOP);//表示球g.setColor(255, 0, 0);g.drawString(“with Timer”,0,0,Graphics.TOP|Graphics.LEFT);g.fillArc(x, 50, 40, 40, 0, 360);}/*** 能够变化球的X坐标*/public void increment() {x += 3;}}/*** 秒表任务*根据秒表所设定的时间表,运行run()方法。
*/class TimerMovingBallTask extends TimerTask {private TimerMovingBallCanvas canvas;/*** 构造函数*/public TimerMovingBallTask(TimerMovingBallCanvas canvas) { this.canvas = canvas;}/*** 呼叫秒表时所进行的处理*/public void run() {canvas.increment();canvas.repaint();}}ex. 5TimerMovingCanvas类的构造函数中进行下面的秒表设定。
而且,在继承了TimerTask的TimerMovingBallTask中的run()方法中,呼出使球运动的X坐标的增加处理。