[計算機(jī)軟件及應(yīng)用]Java回顧---例子驅(qū)動1_第1頁
[計算機(jī)軟件及應(yīng)用]Java回顧---例子驅(qū)動1_第2頁
[計算機(jī)軟件及應(yīng)用]Java回顧---例子驅(qū)動1_第3頁
[計算機(jī)軟件及應(yīng)用]Java回顧---例子驅(qū)動1_第4頁
[計算機(jī)軟件及應(yīng)用]Java回顧---例子驅(qū)動1_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、單擊此處編輯母版標(biāo)題樣式單擊此處編輯母版文本樣式第二級第三級第四級第五級*第一部分 Java回顧(一)-例子驅(qū)動第一節(jié) Java語言根底1Java采用國際化的Unicode字符集。 Unicode字符集:每個字符占二個字節(jié)共65535個字符。其中,前面256個字符表示ASCII碼,使Java對ASCII碼具有兼容性;后面21000個字符用來表示漢字等非拉丁字符。 2標(biāo)識符的命名 標(biāo)識符可以由字母、數(shù)字、下劃線“_和美元符號“$組成,但必須以字母、下劃線或美元符號開頭。 注意:JAVA中的字母包括了世界上任何語言中的“字母表 3 break和continue語句break語句通常有不帶標(biāo)號和帶標(biāo)

2、號兩種形式:break;break Lab; /使程序流程直接退出標(biāo)號Lab所指明的外循環(huán)。 Continue使循環(huán)短路。有兩種形式:continue;continue lab;當(dāng)程序中有嵌套的多層循環(huán)時,為從內(nèi)循環(huán)直接跳到外循環(huán),可使用帶標(biāo)號的continue lab語句?!纠齝1_1.java】 continue語句例如程序。public class c1_1public static void main(String args) int j; p1: for(int i=1;i=10;i+) j=1; while(j=11-i) System.out.print( ); j+; for(

3、j=1;j=i;j+) if(i=3) continue; /當(dāng)i等于3時,不執(zhí)行后面的兩條語句 if(j=9) continue p1; /當(dāng)j等于9時,跳到外循環(huán)入口處 System.out.print(+i+ ); System.out.println( ); 第二節(jié) 類、對象和接口1類是對象的抽象和歸納,對象是類的實例。2創(chuàng)立對象-包括聲明對象和建立對象。 聲明對象就是確定對象的名稱,并指明該對象所屬的類,此時對象還不是類的實例:類名 對象名表; 建立對象就是用new為對象分配存儲空間,使該對象成為類的實例: 對象名=new 構(gòu)造方法( ); 也可合二為一:類名 對象名=new 構(gòu)造方

4、法( ) 3 JAVA中除了根本類型整型、浮點型、字符型外,均為引用型數(shù)組、對象。例:對象的引用與實體class 圓 double 半徑; 圓(double r) 半徑=r; double 計算面積() return 3.14*半徑*半徑; void 修改半徑(double 新半徑) 半徑=新半徑; double 獲取半徑() return 半徑;class 圓錐 圓 底圓;/引用 double 高; 圓錐(圓 circle,double h) this.底圓=circle; this.高=h; double 計算體積() double volume; volume=底圓.計算面積()*高/3

5、.0; return volume; void 修改底圓半徑(double r) 底圓.修改半徑(r); double 獲取底圓半徑() return 底圓.獲取半徑();class Example2_1 public static void main(String args) 圓 circle=new 圓(10); 圓錐 circular=new 圓錐(circle,20); System.out.println(圓錐底圓半徑:+circular.獲取底圓半徑(); System.out.println(圓錐的體積:+circular.計算體積(); circular.修改底圓半徑(100)

6、; System.out.println(圓錐底圓半徑:+circular.獲取底圓半徑(); System.out.println(圓錐的體積:+circular.計算體積(); 第三節(jié) 類庫、包及訪問控制 Java語言由語法規(guī)那么和類庫兩局部組成。 Java類庫(JFC)是系統(tǒng)定義的類的集合,它可以幫助開發(fā)者方便、快捷地開發(fā)Java程序。當(dāng)編寫Java程序時,直接利用現(xiàn)成的類庫,不僅可以提高編程效率,也可以保證軟件的質(zhì)量。 在Java系統(tǒng)中,根據(jù)實現(xiàn)的功能不同,將系統(tǒng)定義好的類劃分成不同的集合。每個集合稱為一個包,所有包合稱為類庫。Java類庫的每個包中都有假設(shè)干個具有特定功能和相互關(guān)系的

7、類和接口。例如,java.lang包中包含了運行Java程序必不可少的系統(tǒng)類,它們包括根本數(shù)據(jù)類型、根本數(shù)學(xué)方法、字符串處理等類;java.awt包中包括了用來構(gòu)建圖形用戶界面(GUI)的類庫。 類的一般定義形式: 類修飾符 class 類名 extends 父類名 implements 接口列表 修飾符 數(shù)據(jù)成員類型 數(shù)據(jù)成員名表; 修飾符 返回值的類型 成員方法名(形式參數(shù)表)throws 異常表 在定義一個類而不給出extends關(guān)鍵字及父類名時,默認(rèn)這個類是系統(tǒng)類object的子類。 (1) 修飾符可以是public、private、protected等訪問權(quán)限修飾符,也可以是stat

8、ic、final等非訪問權(quán)限修飾符。 (2) 訪問權(quán)限修飾符是一組用于指明類、成員何時可以被其他類訪問的控制符。非訪問權(quán)限修飾符指明使用方式。 (3) throws 指出當(dāng)該方法遇到異常情況時如何處理。 (4) implements 接口列表: Java本來只支持單繼承,為了給多重繼承的軟件開發(fā)提供方便,它提供了這一接口機(jī)制。 (5) 在Java程序中,成員的聲明只能在類中進(jìn)行 (6) 缺省訪問控制符說明具有“友好訪問特性【例如程序c3_1.java】 static及final成員import java.awt.*;import javax.swing.*;class ca static in

9、t n=20; final int nn; /聲明nn,但沒有賦初值 final int k=40;/聲明k并賦初值40 ca( ) nn= +n; /在構(gòu)造方法中給nn賦值 / static int sum()return k+n;錯,引用了非static成員 public class c3_1 extends JApplet public void paint(Graphics g) ca m1=new ca( ); ca m2=new ca( ); / m1.nn=90; /錯誤,因為nn是標(biāo)識符常量 g.drawString(m2.nn=+m2.nn,20,30); g.drawStr

10、ing(m2.k=+m2.k,20,50); g.drawString(m1.nn=+m1.nn,20,70); g.drawString(m1.k=+m1.k,20,90); g.drawString(m2.n+ca.n=+m2.n+ca.n,20,110); 圖3.8 程序c3_9的執(zhí)行結(jié)果 第四節(jié) 多態(tài)機(jī)制多態(tài)的概念 多態(tài)是指一個程序中有多個同名方法共存的情況。這些方法同名的原因是它們的最終功能和目的都相同,但是由于在完成同一功能時,可能遇到不同的具體情況,所以需要有不同的具體實現(xiàn)形式。多態(tài)可以提高程序的抽象度、封閉性和簡潔性,統(tǒng)一一個或多個相關(guān)類對外的接口,使得它們不需了解對方的具體細(xì)

11、節(jié),就可以很好地共同工作。 Java中提供兩種多態(tài)機(jī)制:重載與覆蓋?!纠?c4_1.java】class a1int x=4;int y=1; public void Printme( ) System.out.println(x=+x+ y=+y); System.out.println(class name: +this.getClass( ).getName( ); public class c4_1 extends a1int x; public void Printme( )/重寫父類的方法時,不可降低(但可擴(kuò)大)方法的訪問權(quán)限 int z=super.x+6; super.Prin

12、tme( ); System.out.println(I am an +this.getClass( ).getName( ); x=5; System.out.println( z=+z+ x=+x);/打印子類的數(shù)據(jù)成員 public static void main(String arg ) int k; a1 p1=new a1( ); c4_1 p2=new c4_1( ); p1.Printme( ); p1=p2; p1.Printme( ); / super.Printme( );/錯,在static方法中根本就不認(rèn)識super和this 運行結(jié)果如下:x=4 y=1class

13、 name: a1x=4 y=1class name: c4_1I am an c4_1z=10 x=5【例如程序c4_2.java】class addclass public int x=0; addclass(int x) this.x=x; System.out.println(addclass); public int add( ) return x+5;public class c4_2 extends addclass int a=0; addclass a1=new addclass(1); c4_2(int x) super(x); a=x+10; System.out.pri

14、ntln(“c4_2);/去掉super(x); ? public int add( ) System.out.println(super: x+5=+super.add( ); return a+x; public static void main(String args) c4_2 p=new c4_2(2); System.out.println(a+x=+p.add( ); 輸出:addclassaddclassC4_2super: x+5=7a+x=14【例如程序c4_3.java】父類對象與子類對象之間在一定條件下相互轉(zhuǎn)換class SuperClass int x=1,y=2,t

15、=98; void show( ) System.out.println(x+y=+(x+y); class SubClass extends SuperClass int y=9,z=7; void show( ) System.out.println(y*z+x=+(y*z+x); public class c4_3 /使用父類與子類public static void main(String args) SuperClass sc,scf; SubClass sb,sbf; sc=new SuperClass( ); sb=new SubClass( ); sc.show( ); scf

16、=(SuperClass)sb; /也可以寫成:scf=sb; scf.show( ); sbf=(SubClass)scf; /父類引用轉(zhuǎn)換為子類引用 System.out.println(sbf.x=+sbf.x+ sbf.y=+sbf.y+ sbf.z=+sbf.z); System.out.print(sbf.show( ):t); sbf.show( ); 運行結(jié)果:x+y=3y*z+x=64sbf.x=1 sbf.y=9 sbf.z=7sbf.show( ):y*z+x=64第五節(jié) 抽象類、接口接口 Java出于平安性、簡化程序結(jié)構(gòu)的考慮,不支持多繼承。然而在解決實際問題的過程中,

17、在很多情況下僅僅依靠單繼承不能將復(fù)雜的問題描述清楚。例如,冷藏車既是一種汽車,也是一種制冷設(shè)備,所以它是汽車的子類也是制冷設(shè)備的子類。為了使類間層次結(jié)構(gòu)合理,并符合實際問題的本質(zhì),JAVA用接口來實現(xiàn)多重繼承機(jī)制。 說明: (1) 接口可以看成一個特殊類。 (2) 接口修飾符有兩種:public 和默認(rèn)。1聲明接口修飾符 interface接口名extends 父接口名列表常量數(shù)據(jù)成員聲明 抽象方法聲明 (3) 接口中定義的數(shù)據(jù)成員全是final staticpublic final static double PI=3.14159;final static int a=9;int SUM=1

18、00;(等價于final static int SUM=100;) (4) 接口中的方法默認(rèn)為public abstract方法,格式如下: 返回值類型 方法名(參數(shù)列表); 2. 類實現(xiàn)接口的本卷須知 一個類要實現(xiàn)接口,要注意以下幾點: (1) 如果實現(xiàn)某接口的類不是abstract的抽象類,那么在類的定義局部必須實現(xiàn)指定接口的所有抽象方法,而且方法頭局部應(yīng)該與接口中的定義完全一致。 (2) 一個類只能有一個父類,但可以同時實現(xiàn)假設(shè)干個接口。 (3) 如果實現(xiàn)某接口的類是abstract的抽象類,那么它可以不實現(xiàn)該接口所有的方法。 (4) 類在實現(xiàn)方法時,必須顯式地使用public修飾符,否

19、那么?【例如程序c5_1.java】編寫一個計算矩形、三角形和圓的面積與周長的程序import java.awt.*; import javax.swing.*;interface Shapes abstract double getArea( ); abstract double getPerimeter( );class Coordinatesint x,y; public Coordinates(int x,int y) this.x=x; this.y=y;class Square extends Coordinates implements Shapespublic int widt

20、h,height; public double getArea( )return(width*height); public double getPerimeter( )return(2*width+2*height); public Square(int x,int y,int width,int height) super(x,y); this.width=width; this.height=height;class Circle extends Coordinates implements Shapespublic int width,height; public double r;

21、public double getArea( )return(r*r*Math.PI); public double getPerimeter( )return(2*Math.PI*r); public Circle(int x,int y,int w,int h) super(x,y); width=w; height=h; r=(double)width/2.0;public class c5_1 extends JAppletSquare Box=new Square(5,15,25,25); Circle Oval=new Circle(5,90,25,25); public void

22、 paint(Graphics g) g.drawRect(Box.x,Box.y,Box.width,Box.height); g.drawString(Box Area:+Box.getArea( ),50,35); g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height); 程序c5_1的運行結(jié)果例5-2:接口回調(diào)interface Computerablepublic double 求面積();class 梯形 implements Computerable double a,b,h; 梯形(double a,double b,double h)

23、 this.a=a;this.b=b;this.h=h; public double 求面積() return(1/2.0)*(a+b)*h);class 圓形 implements Computerable double r; 圓形(double r) this.r=r; public double 求面積() return(3.14*r*r);class 錐 Computerable 底; /用接口變量,可以回調(diào)求面積方法。 double 高; 錐(Computerable 底,double 高) this.底=底; this.高=高; void 換底(Computerable 底) th

24、is.底=底; public double 求體積() return (底.求面積()*高)/3.0;public class Example5_2 public static void main(String args) 錐 zui; Computerable bottom; bottom=new 梯形(2.0,7.0,10.7); /接口變量中存放對象的引用 System.out.println(梯形的面積+bottom.求面積(); zui=new 錐(bottom,30); System.out.println(梯形底的錐的體積+zui.求體積(); bottom=new 圓形(10)

25、; /接口變量中存放對象的引用。 System.out.println(半徑是10的圓的面積+bottom.求面積(); zui.換底(bottom); System.out.println(圓形底的錐的體積+zui.求體積(); 第六節(jié) 數(shù)組一維數(shù)組的聲明 聲明一個數(shù)組就是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型。數(shù)組的維數(shù)用 “ 的個數(shù)來確定。數(shù)組元素的類型可以是Java的任何數(shù)據(jù)類型,如根本類型(int、float、double、char等),類(class)或接口(interface)等。數(shù)組的聲明格式如下:int abc ;double example2;只能空一維數(shù)組的初始化

26、聲明一個數(shù)組僅僅為這個數(shù)組指定數(shù)組名和數(shù)組元素的類型,并不為數(shù)組元素分配實際的存儲空間。 接指定初值的方式:int a1=23,-9,38,8,65; 用關(guān)鍵字new初始化數(shù)組 類型標(biāo)識符 數(shù)組名 ; 數(shù)組名=new 類型標(biāo)識符數(shù)組長度; 或合二為一:int a=new int10;在Java語言中,數(shù)組實際上是一種隱含的“數(shù)組類的實例。每個數(shù)組名實際是該實例的一個引用。 【例如程序c6_1.java】 二分查找。import java.io.*;class FindSearch int binarySearch(int arr ,int searchValue) int low=0;/ lo

27、w是第一個數(shù)組元素的下標(biāo) int high=arr.length-1;/ high是最后一個數(shù)組元素的下標(biāo) int mid=(low+high)/2; / mid是中間那個數(shù)組元素的下標(biāo) while(low=high & arrmid!=searchValue) if( arrmidhigh) mid=-1; return mid;/ 假設(shè)為-1那么表示不存在要查的元素 public class c6_1public static void main(String args) throws IOException BufferedReader keyin=new BufferedReader(

28、new InputStreamReader(System.in); int i,k,search,mid; String c1; int arr =2,4,7,18,25,34,56,68,89; System.out.println(打印原始數(shù)據(jù)); for(i=0;iarr.length;i+) System.out.print( +arri); System.out.println(n); System.out.println(請輸入要查找的整數(shù)); c1=keyin.readLine( ); search=Integer.parseInt(c1); FindSearch p1=new

29、FindSearch( ); mid=p1.binarySearch(arr,search); if(mid=-1) System.out.println(沒找到!); else System.out.println(所查整數(shù)在數(shù)組中的位置下標(biāo)是:+mid); 【例如程序c6_2.java】數(shù)組是對象,數(shù)組名是引用變量。public class c6_2 public static void main(String arg ) int i; int a1=2,5,8,25,36; int a3 =90,3,9; System.out.println(a1.length=+a1.length);

30、 System.out.println(a3.length=+a3.length); a3=a1; /賦值的結(jié)果是a3指向a1指向的數(shù)組 System.out.print(a1:); for(i=0;ia1.length;i+) System.out.print( +a1i); System.out.println(n); System.out.println(a3.length=+a3.length); System.out.print(a3:); for(i=0;ia3.length;i+) System.out.print( +a3i); System.out.println(n); 運

31、行結(jié)果:a1.length=5a3.length=3a1: 2 5 8 25 36a3.length=5a3: 2 5 8 25 36class Student private String name; private char sex; private double score; Student(String cname,char csex,double cscore) name=cname; sex=csex; score=cscore; String getName( )return name; char getSex( )return sex; void studPrint( ) Sy

32、stem.out.println(Name: +name+tSex: +sex+tScore: +score);【例如c6_3.java】 學(xué)生數(shù)組public class c6_3public static void main(String args) String mname; char msex; int len; Student st1=new Student3; /聲明時并不為每一個元素分配存儲空間 st10=new Student(li,F,89); /為每一個對象數(shù)組元素分配存儲空間 st11=new Student(he,M,90); st12=new Student(zhan

33、g,M,78); len=3; for(int i=0;ilen;i+) st1i.studPrint( ); mname=st11.getName( ); msex=st11.getSex( ); System.out.println(Name 1:+mname+tSex:+msex); 運行結(jié)果:Name: liSex: FScore: 89.0Name: heSex: MScore: 90.0Name: zhangSex: MScore: 78.0Name 1:heSex:M二維數(shù)組的聲明 類型說明符 數(shù)組名 ;或 類型說明符 數(shù)組名;二維數(shù)組的初始化 1用new操作符初始化數(shù)組 用ne

34、w操作符來初始化數(shù)組有兩種方式: (1) 數(shù)組名=new 類型說明符數(shù)組長度 ; (2) 數(shù)組名=new 類型說明符數(shù)組長度 數(shù)組長度;以行為主次序存儲例如:int arra ; /聲明二維數(shù)組arra=new int34;/實際上相當(dāng)于下述4條語句: /創(chuàng)立一個有3個元素的數(shù)組,且每個元素也是數(shù)組 arra=new int3 ; /創(chuàng)立3個行引用元素arra0=new int4;/創(chuàng)立數(shù)組arra0,它有4個元素arra1=new int4;arra2=new int4;圖4.10 語句“arra=new int34;的作用 int arr=new int4 ;和int arr =new i

35、nt43; 也可行,但是,不指定行數(shù)而指定列數(shù)是錯誤的。例如int arr=new int 4; 是錯誤的。 【例c6_4.java】 分析程序class Maxvalueint maxvl(int arr1 ) int i, k, max; int len=arr1.length, len1; max=arr100; for(i=0;i=len-1;i+) len1=arr1i.length; for(k=0;kmax) max=arr1ik; return max; public class c6_4 public static void main(String args) int max

36、x; int arr=1,3,7,6,78,0,42,5,-98,7,10,-1; Maxvalue p1=new Maxvalue( ); maxx=p1.maxvl(arr); System.out.println(max=+maxx); 第七節(jié) String類 String類對象是一經(jīng)創(chuàng)立便不能變動內(nèi)容的字符串常量, 而StringBuffer類是一個在操作中可以更改其內(nèi)容的字符串類。 Java的任何字符串常量都是String類的對象,在沒有明確命名時,為其創(chuàng)立一個匿名String類對象。如: String c1=“Java;通過賦值號將匿名String類的對象Java賦值給c1引用。

37、注意:c1是變量(它可以引用不同的串對象),但它引用的串是常量?!纠齝7_1.java】字符串的連接、替換和字母大小寫轉(zhuǎn)換操作:concat、replace、toLowerCase、toUpperCase。 public class c7_1 public static void main(String args ) String s1=Java, s2=java,s3=Welcome; String s4=Welcome, s5=Welcoge; String sc1=s3.concat(s1);/ sc1值為Welcome Java String sc2=s1.concat(abx); S

38、tring sr1=s3.replace(e,r);/s3不變 String w1=s5.toLowerCase( ), u2=s2.toUpperCase( ); System.out.println(s1=+s1+ts2=+s2); System.out.println(s3=+s3+ts4=+s4); System.out.println(s5=+s5); System.out.println(s3+s1=+sc1); System.out.println(s1+abx=+sc2); System.out.println(s3.replace(e,r)=+sr1); System.out

39、.println(s5.toLower=+w1); System.out.println(s2.toUpper=+u2); 運行結(jié)果:s1=Java s2=javas3=Welcome s4=Welcomes5=Welcoges3+s1=WelcomeJavas1+abx=Javaabxs3.replace(e,r)=Wrlcomrs5.toLower=welcoges2.toUpper=JAVA其他類型的數(shù)據(jù)轉(zhuǎn)換成字符串 String類中的valueOf(參數(shù))成員方法可以將參數(shù)類型的數(shù)據(jù)轉(zhuǎn)換成字符串,參數(shù)的類型可以是:boolean,char,int,long,float,double和對

40、象。【例c7_2.java】 將其他類型數(shù)據(jù)轉(zhuǎn)換成字符串。 public class c4_5 public static void main(String args ) double m1=3.456; String s1=String.valueOf(m1); char cc=a,b,c; String s2=String.valueOf(cc);/將字符數(shù)組轉(zhuǎn)換成字符串 boolean f=true; String s3=String.valueOf(f); /將布爾值轉(zhuǎn)換成字符串 char cs=J,a,v,a; String s4=String.valueOf(cs,2,2); Sy

41、stem.out.println(m1=+m1+ts1=+s1); System.out.println(s2=+s2); System.out.println(f=+f+ts3=+s3); System.out.println(s4=+s4); char cb=s3.toCharArray(); /將串轉(zhuǎn)換成字符數(shù)組 System.out.println(cb=+cb0+cb1+cb2+cb3); System.out.println(cb=+cb); 運行結(jié)果:m1=3.456s1=3.456s2=abcf=true s3=trues4=vacb=truecb=C11a698a【例c7_3

42、.java】valueOf(p)引用toString(p) ,而toString(p) 將p對象轉(zhuǎn)換成字符串class A1int x,y; A1(int x,int y)this.x=x;this.y=y; public String toString( )return (tx=+x+t,y=+y);public class c7_3public static void main(String args ) A1 p=new A1(2,6); String str=String.valueOf(p);/對象的串表示 System.out.println(str=+str); 【例Exampl

43、e7_4.java】 數(shù)字串轉(zhuǎn)換成相應(yīng)的數(shù)值public class Example5_5public static void main(String args) double n,sum=0.0 ; for(int i=0;iargs.length;i+) sum+=Double.valueOf(argsi).doubleValue(); / 與sum+=Double.parseDouble(argsi)等價; /查看Double與String類中靜態(tài)方法valueOf的各自返回值類型 n=sum/args.length; System.out.println(平均數(shù):+n); 第八節(jié) Ja

44、va Applet1、所有小應(yīng)用程序的根源 Java小應(yīng)用程序Java Applet是使用Java語言編寫的一段代碼,它能夠在瀏覽器環(huán)境中運行。 Applet與Application地主要區(qū)別在于它們的執(zhí)行方式不同:Application是使用命令行命令直接運行,從其main()方法開始運行的;而Applet那么是在瀏覽器中運行的,首先必須創(chuàng)立一個HTML文件,通過編寫HTML語言代碼告訴瀏覽器載入何種Applet以及如何運行,再在瀏覽器中給出該HTML文件的URL地址即可。1、所有小應(yīng)用程序的根源 回憶一下小應(yīng)用程序的書寫格式 import javax.swing.*; public cla

45、ss MyApplet extends JApplet ; 每一個小應(yīng)用程序都繼承自javax.JApplet類,并且每個小應(yīng)用都有一個主程序類,之前必須加上public。Applet其實是一種能夠在瀏覽器Web中運行的特殊的圖形用戶界面程序。2.1 所有小應(yīng)用程序的根源http:/someLocation/file.html1. Browser loads URL2. Browser loads HTML documentApplet class3. Browser loads applet classesLocation:http:/someLocation/file.htmlLoadin

46、g.4. Browser run applet1、所有小應(yīng)用程序的根源appletBrowserSERVER本地程序fileSERVERlocalconnectionconnectionapplet被下載的與applet無關(guān)的本地方法小應(yīng)用程序的限制Applet不允許訪問系統(tǒng),除非通過定義平安策略與簽名授權(quán)機(jī)制,被Java運行系統(tǒng)授予了相應(yīng)的權(quán)限。1、所有小應(yīng)用程序的根源一個簡單例子:import javax.swing.*;import java.awt.*;public class HelloApplet extends JAppletpublic String s; public voi

47、d init() s = new String(“Hello World!); public void paint(Graphics g) g.drawString(s,25,25); Hello World HelloApplet.javajavax.swing.JAppletpublic void init()public void destroy()public void start()public void stop()public void paint(Graphics g)2、小應(yīng)用程序的執(zhí)行Applet的運行控制 Applet的運行控制 JApplet的生命周期初始態(tài)(瞬態(tài))運行

48、態(tài)停止態(tài)消亡態(tài)離開Web頁面:極小化或裝入其他頁面,調(diào)用stop()方法重新裝入或改變頁面大小或返回Web頁面,調(diào)用start()方法關(guān)閉瀏覽器,調(diào)用stop()、destroy()方法第一次裝入,構(gòu)造applet類,調(diào)用init()方法調(diào)用start()方法2、小應(yīng)用程序的執(zhí)行Applet的運行控制 Applet中沒有main()方法。當(dāng)Applet被瀏覽器運行時, init() 、start()、stop()、destroy()方法等自動執(zhí)行: init()方法:初始化,自動調(diào)用,只執(zhí)行一次。 start()方法:初始化后,重入等都將自動調(diào)用。 stop()方法:離開Applet所在頁面時

49、調(diào)用。 destroy()方法:瀏覽器關(guān)閉時自動調(diào)用,以去除Applet所用的所有資源。2、小應(yīng)用程序的執(zhí)行Applet的運行控制public class SimpleApplet extends JAppletStringBuffer buffer; public void init() buffer = new StringBuffer(); addItem(initializing. ); public void start() addItem(starting. ); public void stop() addItem(stopping. ); public void destroy

50、() addItem(preparing for unloading(destroy). ); void addItem(String newWord) System.out.println(newWord); buffer.append(newWord); repaint(); public void paint(Graphics g) g.drawRect(0, 0, getSize().width-1, getSize().height - 1); g.drawString(buffer.toString(),5, 15); SimpleApplet.java2、小應(yīng)用程序的執(zhí)行Appl

51、et的運行控制 HTML中applet標(biāo)簽的使用 APPLET CODE = appletFile WIDTH = pixels HEIGHT = pixels VSPACE = pixels HSPACE = pixels . . . 2、小應(yīng)用程序的執(zhí)行Applet與HTMLJava applet其它內(nèi)容其它內(nèi)容vspacehspace其它內(nèi)容vspace其它內(nèi)容hspaceheightwidth2、小應(yīng)用程序的執(zhí)行Applet與HTMLpublic class AppletPara extends JAppletString s1,s2; public void init() s1=ge

52、tParameter(p1); s2=getParameter(p2); public void paint(Graphics g) g.drawString(s1,10,10); g.drawString(s2,10,30); Applet Parameter Test 兩個步驟: 在Applet類中: s1 = getParameter(p1); 在頁面中設(shè)置Applet參數(shù): AppletPara.javapublc class AppletApp extends JAppletpublic String s; public void init() s=new String(“Hello

53、 World!); public void paint(Graphics g) g.drawString(s,25,25); 一個Java類文件可以既是一個Java Applet,又是一個Java Application,但它卻既可以在瀏覽器中運行,又可以作為Application單獨運行。public static void main(String args)Frame f=new Frame(“Applet-App); AppletApp app = new AppletApp(); f.add(app, “Center); f.setSize(200, 200); f.setVisibl

54、e(true); f.addWindowListener( new WindowAdapter() ); app.init(); app.start();AppletApp.java2、小應(yīng)用程序的執(zhí)行Applet與Application3、圖形操作paint()、update()和repaint() Applet中有三個顯示相關(guān)的方法:paint()、update()和repaint()。 Applet的顯示更新是由一個AWT線程來控制完成的,它主要負(fù)責(zé)兩種顯示更新情況:第一是曝光,表示局部顯示區(qū)域被遮蓋、調(diào)整大小、最大最小化等,這種情況隨時會發(fā)生,需要系統(tǒng)調(diào)用paint()方法;第二是程序

55、需要重畫顯示區(qū)域,添加一些新的顯示內(nèi)容,需要程序調(diào)用repaint()方法。AWT thread(waiting)update():clear area call paint()paint()程序調(diào)用repaint()Exposure:遮蓋、調(diào)整大小、最大最小化等3、圖形操作paint()、update()和repaint() paint( Graphics g )方法 當(dāng)小應(yīng)用首次被裝載,以及每次窗口放大、縮小、刷新時都要調(diào)用paint()方法當(dāng)用戶窗口界面遭到破壞時。當(dāng)程序希望調(diào)用paint方法時,用repaint()方法。 paint()方法的參數(shù)是Graphics類的對象 g,該對象不

56、是由new產(chǎn)生的,而是由系統(tǒng)或其他方式直接將生好的Graphics對象當(dāng)作方法的參數(shù),再交給paint()方法。 update()方法 update()方法用于更新圖形。它首先去除背景,然后設(shè)置前景,再調(diào)用paint()方法完成Applet中的具體繪圖。一般不要重寫update()方法。3、圖形操作paint()、update()和repaint()3、圖形操作Graphics、Font和Color類的使用 在paint()方法中有一個Graphics類參數(shù),它是畫圖的關(guān)鍵。它支持兩種繪制:一是根本的繪圖,包括畫點、線、矩形、文字等;二是畫圖象。在進(jìn)行根本畫圖時,可以設(shè)定所需的顏色和字體等,這

57、需要用到Font、FontMetrics和Color三個類。 repaint()方法 repaint()方法主要用于重繪圖形,它是通過調(diào)用update()方法來實現(xiàn)圖形重繪的。一般不要重寫repaint()方法。 /定時器、動畫例如import javax.swing.*;import java.awt.*;import java.awt.event.*;public class a extends JFrame implements ActionListener int offset = -10; private Image im; private Timer timer; private

58、AnimationPane animationPane; public a() super(動畫例如); int delay = 100; timer = new Timer(delay, this); timer.setInitialDelay(0); Container c = getContentPane(); c.setLayout(new FlowLayout(); c.setBackground(Color.gray); Toolkit toolkit = Toolkit.getDefaultToolkit(); im = toolkit.getImage(cat.gif); animationPane = new AnimationPane(im); c.add(animationPane); timer.start(); setSize(300, 150); show(); /顯示動畫的JPanel class AnimationPane extends JPanel Image image; public AnimationPane(Image image)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論