服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

在中文windows95环境下用java设计汉字动画


  java语言是目前为止最新、推广最快的一种新型面向对象程序设计语言,由于java具有面向对象、平台无关性、稳固性与安全性、多线程等特性,从而为用户提供了一个良好的程序设计环境。它利用面向对象方法,提供了一组用于图形用户界面(gui)开发的类,这些类包含在抽象窗口工具集(abstract windows toolkit,简称awt)中。利用这些类,我们可以非常方便地设计出与平台无关、界面友好的应用程序。但由于java目前还不支持汉字,因此我们选用支持java语言的中文windows 95平台来设计汉字动画程序。下面即是一个简单的示例程序。

我们知道,java设计的程序分为两种:一类是由java解释器解释执行的java应用;另一类是必须嵌入到web页中,由java兼容浏览器(如:sun公司的hotjava、netscape的navigator)来控制执行的javaapplet;下面的程序即是一个必须嵌入到web页中的applet。applet有其固定的程序框架。它要求在主事件中至少实现下列五种方法之一:
初始化方法init():创建对象、设置初始状态、参数等
启动方法start():启动applet开始运行
停止方法stop():停止applet运行
删除方法destroy():杀死applet所有正在运行的线程,释放对象
绘制方法paint():在屏幕上显示信息

在本例applet中,实现了start()、stop和paint()三种方法。
在实际应用中,应用程序往往需要同时处理多个事件,如,一方面进行图形显示,另一方面接收用户输入。在不支持多线程的情况下,我们只能依次完成每个事件。在支持多线程的java中,就可以创建一个线程专门用来进行图形显示,而在主事件中接收用户输入,两者并发执行。创建线程必须实现线程类(thread)的run()方法,运行系统通过调用run()方法来实现线程的行为。

下面,我们来看例子程序myanimator.java。在java中,没有类就无法运行程序。我们建立了一个applet类的子类myanimator,并实现了runnable界面。实现runnable界面的目的是为了创建线程。线程体定义在run()方法中,循环地调用repaint()方法,然后调用sleep()方法使线程睡眠delaytime时间。睡眠时间到,线程又被唤醒,再次执行循环体。repaint()方法调用了paint()方法。在paint()方法中,先设置字型及大小,再根据变量flag值为0、1、2、3,设置颜色为红、绿、黄、蓝四种颜色之一。调用draw?string()方法在屏幕上输出汉字串。然后使flag值加一。若falg大于3,把flag置为0。程序开始执行时,先启动start()方法,在start()方法中启动线程,在屏幕上以红、绿、黄、蓝四种颜色循环显示汉字串,实现了动画显示。

为了运行这个applet,必须把它嵌入到web页中。我们编写了一个简单的html文件myanimator.html。code属性指定applet的文件名为myanimator.class。width和height分别指定了applet的显示宽度和高度。然后在中文windows95的dos模式下,用如下命令来编译:
c:/hotjava/bin/javacmyanimator.java

编译通过后,生成myanimator.class字节码文件。这时即可用浏览applet的工具appletviewer来浏览该html,命令如下:
c:/hotjava/bin/appletviewermyanimator.html
需要注意的一点是,在支持长文件名的windows95下,保留大小写但不区分大小写。而java是区分大小写的,而且文件名需与类名相同。
源程序myanimator.java
//汉字动画applet
//writedbyljy1997.6.20

importjava.awt. :
publicclassmyanimatorextendsjava.applet.appletimplementsrunnable
{intdelaytime=100;//线程睡眠时间
intflag=0;
threadanimator;//定义线程
fontf=newfont(″timesroman″,font.bold,48);//创建字型类实例
stringname=″汉字动画演示″;
publicvoidstart()
{animator=newthread(this);//创建线程

animator.start();//启动线程}
publicvoidrun()//线程体
{while(animator!=null)//如果线程已创建,循环执行
{repaint();//向屏幕输出
try{
thread.sleep(delaytime);//线程睡眠

}catch(interruptedexceptione){
break;}
}}
publicvoidstop()
{animator.stop();//停止线程
animator=null;}
publicvoidpaint(graphicsg)
{g.setfont(f);//设置字型及大小

switch(flag)

case0:g.setcolor(color.red);
break;
case1:g.setcolor(color.green);
break;
case2:g.setcolor(color.yellow);
break;
case3:g.setcolor(color.blue);
break;

g.drawstring(this.name,5,50);
flag++;
if(flag>3)flag=0;
}}
html文件:myanimator.html
〈appletcode=myanimator.classwidth=300height=80〉
〈/applet〉

扫描关注微信公众号