程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 在中文Windows95環境下用Java設計漢字動畫

在中文Windows95環境下用Java設計漢字動畫

編輯: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〉

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved