




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.1一個(gè)Applet程序的運(yùn)行
7.2Applet與HTML標(biāo)識(shí)
7.3Applet的生命周期與主要方法
7.4Java與圖形設(shè)計(jì)
7.5Java與多媒體
7.6雙重目的代碼
7.7小結(jié)
7.8習(xí)題
Applet的類層次如圖7-1所示。
Applet主要存在于AWT中的Applet類和Swing包中。7.1一個(gè)Applet程序的運(yùn)行圖7-1Applet類層次7.1.1小應(yīng)用程序Applet簡(jiǎn)介
Applet是應(yīng)用Java語(yǔ)言編寫的類,它能夠嵌入到一個(gè)HTML頁(yè)面中,而且可通過(guò)Web瀏覽器下載和執(zhí)行。
Applet是一種特定類型的類,其執(zhí)行方式不同于應(yīng)用程序Application。應(yīng)用程序Application是從它的main()方法被調(diào)用時(shí)開始的;而Applet的生命周期在一定程度上則要復(fù)雜得多,我們?cè)诤竺鎸⒃敿?xì)介紹。
因?yàn)锳pplet是在瀏覽器中運(yùn)行的,所以必須將一個(gè)Applet類嵌入到一個(gè)HTML網(wǎng)頁(yè)中,通過(guò)HTML代碼使瀏覽器調(diào)用Applet類。運(yùn)行Applet時(shí)只需在瀏覽器中訪問(wèn)HTML網(wǎng)頁(yè)文件的URL地址即可。7.1.2小應(yīng)用程序?qū)嵗?/p>
編寫Applet時(shí),必須編寫一個(gè)Applet或JApplet類。下面分別編寫一個(gè)在Web頁(yè)面上輸出學(xué)生基本信息的Applet和JApplet。
【例7-1】編寫StudentInfo1.java源文件,以Applet類實(shí)現(xiàn)Web中學(xué)生基本信息的顯示。
importjava.awt.Graphics;
importjava.applet.Applet;
publicclassStudentInfo1extendsApplet
{ Stringname,sex,age;
publicvoidinit()
{
name="張三";
sex="男";
age="20";
}
publicvoidpaint(Graphicsg) {
g.drawString(name,10,20);
g.drawString(sex,10,40);
g.drawString(age,10,60);
}
}
【例7-2】編寫StudentInfo2.java源文件,以JApplet類實(shí)現(xiàn)Web中學(xué)生基本信息的顯示。
importjava.awt.Graphics;
importjavax.swing.*;
publicclassStudentInfo2extendsJApplet
{
Stringname,sex,age;
publicvoidinit() {
StudentInfo2PanelcontentPane=newStudentInfo2Panel();
setContentPane(contentPane);
}
}
classStudentInfo2PanelextendsJPanel
{ publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
g.drawString("張三",10,20);
g.drawString("男",10,40);
g.drawString("20",10,60);
}
} 編寫完上述兩段程序后,編譯源文件,使之生成StudentInfo1.class和StudentInfo2.class的字節(jié)碼文件。
編寫StudnetInfo1.html,其中包含如下代碼:
<Appletcode=SudentInfo1width=200height=300></Applet>
保存后在瀏覽器中瀏覽該文件,則StudentInfo1的JavaApplet程序執(zhí)行結(jié)果如圖7-2所示。圖7-2Applet在瀏覽器中的執(zhí)行以同樣方法編寫StudentInfo2.html,使類文件指向JApplet實(shí)現(xiàn)的StudentInfo2.class,然后在瀏覽器中執(zhí)行,結(jié)果同圖7-2。7.1.3小應(yīng)用程序查看器Appletviewer
Applet通常是在瀏覽器中運(yùn)行的,大多數(shù)瀏覽器,如HotJava或NetscapeNavigator等,均具有支持Java軟件程序運(yùn)行的能力。微軟的IE瀏覽器早期版本支持Applet的運(yùn)行,但后期取消了這種支持[1],為此JDK中附帶有一個(gè)專為查看Applet而設(shè)計(jì)但不支持HTML頁(yè)面查看的工具——Appletviewer。
[1]新版本J2SE安裝時(shí)提供在IE環(huán)境下Java程序的運(yùn)行支持。
Appletviewer是可以不必使用Web瀏覽器即可運(yùn)行Applet的Java應(yīng)用程序。它類似于一個(gè)“簡(jiǎn)化的瀏覽器”。Appletviewer讀取命令行中URL所指定的HTML文件,忽略其他的HTML代碼。它不能顯示普通的HTML或嵌入在一個(gè)文本頁(yè)中的Applet。
Appletviewer帶有一個(gè)指向包含<applet>標(biāo)記的HTML文件的URL,這個(gè)URL被作為命令行參數(shù)。
如使用Appletviewer命令運(yùn)行StudentInfo2的JApplet程序,語(yǔ)法格式如下:
AppletviewerStudentInfo2.html
由此創(chuàng)建并顯示如圖7-3所示的小窗口。圖7-3Applet在Appletviewer中的執(zhí)行在例7-1和例7-2中,Java編寫的Applet程序若要在瀏覽器中運(yùn)行,必須將Applet嵌入在一個(gè)HTML頁(yè)面中,StudentInfo1.html嵌入語(yǔ)句是最簡(jiǎn)單的實(shí)現(xiàn)方式,完整的Applet語(yǔ)法如下:
<applet
[archive=archiveList]
code=appletFile.class
width=pixelsheight=pixels
[codebase=codebaseURL]7.2Applet與HTML標(biāo)識(shí)[alt=alternateText]
[name=appletInstanceName]
[align=alignment]
[vspace=pixels][hspace=pixels]
>
[<paramname=appletAttribute1value=value>]
[<paramname=appletAttribute2value=value>]
...
[alternateHTML]
</applet>其中各部分代碼說(shuō)明如下:
●?archive=archiveList.這一可選屬性指定了壓縮包文件(.jar或.zip)。壓縮包中包含Applet的類文件和其他類文件,這些文件在Applet下載前從Web服務(wù)器上獲得,.jar文件之間應(yīng)該以“,”隔開,Applet的類文件必須壓縮進(jìn)?.jar文件。
如:
<Appletcode=”Test.class”archive=”Test.jar,Swing.jar”width=100height=100>
</Applet>●?code=appletFile.class.這是一個(gè)必需的屬性,它指定了含有已編譯好的Applet子類的文件名[1]。
●?width=pixelsheight=pixels.這些必需的屬性給出了Applet顯示區(qū)域的初始寬度和高度(以像素為單位),但不包括Applet所產(chǎn)生的任何窗口或?qū)υ捒颉?/p>
●?codebase=codebaseURL.這是一個(gè)可選屬性,它指定了Applet的基址,即小應(yīng)用程序所在的目錄,若該屬性為空,則將HTML文件所在目錄作為URL值?!?alt=alternateText.這一可選屬性指定了當(dāng)瀏覽器能讀取Applet標(biāo)記但不能執(zhí)行JavaApplet時(shí)要顯示的文本。
●?name=appletInstanceName.這個(gè)可選屬性為Applet實(shí)例指定有關(guān)名稱,從而使得在同一頁(yè)面上的Applet可找到彼此(以及互相通信)。
●?align=alignment.這個(gè)可選屬性指定了Applet的對(duì)齊方式。它的可取值與基本的HTML中IMG標(biāo)記的相應(yīng)屬性相同,為left、right、top、texttop、middle、absmiddle、baseline、bottom和absbottom。●?vspace=pixelshspace=pixels.這些可選屬性指定了在Applet上下(vspace)及左右(hspace)的像素?cái)?shù)目。其用法與IMG標(biāo)記的vspace和hspace屬性相同。
●?<paramname=appletAttribute1value=value>.這個(gè)標(biāo)記提供了一種可帶有由“外部”指定的數(shù)值的Applet,它對(duì)Java應(yīng)用程序的作用與命令行參數(shù)相同。Applet用getParameter()方法來(lái)存取它們的屬性。
Applet標(biāo)記是由瀏覽器默認(rèn)的Java虛擬機(jī)來(lái)執(zhí)行的,為了在瀏覽器中使用Java插件,需要使用Java插件標(biāo)記來(lái)代替HTML頁(yè)面中的Applet標(biāo)記。Java插件標(biāo)記以O(shè)BJECT或EMBED為標(biāo)記。
Applet的生命周期與Application的生命周期相比要稍微復(fù)雜一些,其生命周期涉及四個(gè)方法,分別是init()、start()、stop()和destory()。這四個(gè)方法的執(zhí)行順序如圖7-4所示。
init():該函數(shù)在Applet被創(chuàng)建并裝入瀏覽器(如Appletviewer)時(shí)被調(diào)用。Applet可用這個(gè)方法來(lái)初始化數(shù)據(jù)的值。本方法只在Applet首次裝入時(shí)被調(diào)用,并且在調(diào)用start()之前執(zhí)行完成。7.3Applet的生命周期與主要方法圖7-4Applet的生命周期
start():當(dāng)init()方法完成后start()開始執(zhí)行。該方法執(zhí)行后使Applet成為“活動(dòng)態(tài)”。無(wú)論Applet何時(shí)成為可視,它同樣要執(zhí)行一次,如當(dāng)瀏覽器在被圖標(biāo)化后又恢復(fù)時(shí),或者當(dāng)瀏覽器在鏈接到另一個(gè)URL后又返回含有這個(gè)Applet的頁(yè)面時(shí)。
stop():該方法在Applet成為不可視時(shí)被調(diào)用,這種情況一般在瀏覽器被圖標(biāo)化或鏈接到另一個(gè)URL時(shí)會(huì)出現(xiàn)。
start()和stop()形成一對(duì)動(dòng)作:start()激活A(yù)pplet中的某一行為,而stop()則將它禁止。
destory():當(dāng)瀏覽器關(guān)閉時(shí),執(zhí)行該方法,將回收Applet所占用的內(nèi)存。如果在瀏覽器關(guān)閉前Applet處在“活動(dòng)態(tài)”,則先調(diào)用stop()方法,再調(diào)用destory()方法。
【例7-3】Web頁(yè)面背景音樂(lè)的播放(Applet生命周期中各種方法的調(diào)用)。importjava.applet.*;
importjavax.swing.*;
publicclassAppletMathodextendsJapplet
{
AudioClipmusic;
publicvoidinit()
{
music=getAudioClip(getDocumentBase(),"Test.au"); publicvoidstart()
{
music.loop();
}
publicvoidstop()
{
music.stop();
}
}
在執(zhí)行init()時(shí)初始化music對(duì)象;在頁(yè)面調(diào)入并執(zhí)行strat()時(shí)循環(huán)播放音樂(lè),當(dāng)離開頁(yè)面或頁(yè)面最小化為圖標(biāo)時(shí)停止播放音樂(lè)。7.4.1Applet組件顯示
參考圖7-1,Applet類屬于java.aet.Panel類的子類,因此Applet也是一種面板的容器,在Applet中可以加入組件,并通過(guò)SetLayout()方法來(lái)修改組件的布局格式。
【例7-4】在Applet中顯示組件實(shí)例。
importjava.awt.*;
importjava.applet.Applet;
publicclassAppletComponetDisplayextendsApplet
{
publicvoidinit()7.4Java與圖形設(shè)計(jì)setLayout(newBorderLayout());
Labellb0=newLabel("學(xué)生基本信息顯示");
Buttonbtn=newButton("確定");
add(lb0,"North");
add(btn,"South");
Panelp=newPanel();
p.setLayout(newGridLayout(3,2));
Labellb1=newLabel("姓名");
Labellb2=newLabel("性別");
Labellb3=newLabel("年齡"); TextFieldtf1=newTextField("張三");
TextFieldtf2=newTextField("男");
TextFieldtf3=newTextField("20");
p.add(lb1);p.add(tf1);p.add(lb2);
p.add(tf2);p.add(lb3);p.add(tf3);
add(p,"Center");
}
}
運(yùn)行結(jié)果如圖7-5所示。圖7-5Applet組件的顯示7.4.2文本與圖形
Applet圖形是通過(guò)paint()方法來(lái)實(shí)現(xiàn)的。paint()方法帶有參數(shù),它是java.awt.Graphics類的一個(gè)實(shí)例對(duì)象。我們應(yīng)用paint()方法可以在Applet中輸出文本或者繪制圖形。
1.文本輸出
我們通過(guò)Graphics實(shí)例對(duì)象g,調(diào)用paint()方法在Applet中輸出一段文本,調(diào)用paint()方法輸出字符文本時(shí)的參數(shù)分別為輸出字符串、屏幕橫坐標(biāo)及屏幕縱坐標(biāo)。
同其他軟件相似,Java在繪制圖形時(shí)的坐標(biāo)系也是以窗口的左上角作為原點(diǎn),離開原點(diǎn)向右的像素點(diǎn)數(shù)作為橫坐標(biāo),離開原點(diǎn)向下的像素?cái)?shù)為縱坐標(biāo)。例7-5為向屏幕輸出字符串的實(shí)例,其執(zhí)行后的結(jié)果如圖7-6所示。圖7-6文本輸出
2.字體設(shè)置
例7-5中輸出字符串時(shí),若事先沒有設(shè)置它的字體和字形,則默認(rèn)輸出一般為宋體(中文字體)無(wú)加黑、無(wú)加粗和傾斜。應(yīng)用Graphics類中的getFont()方法,可以知道當(dāng)前輸出字符所用的字體;應(yīng)用setFont方法,可以設(shè)置輸出字符的字體。例7-6為創(chuàng)建字體的實(shí)例對(duì)象,對(duì)繪圖通過(guò)g.setFont()方法來(lái)設(shè)置字體,運(yùn)行效果如圖7-7所示。圖7-7字體變換此外,對(duì)組件實(shí)例對(duì)象也可以設(shè)置字體,如:
Fontf=newFont(“楷體”,Font.BOLD,14);
TextFieldtf1=NewTextField(“確定”);
tf1.setFont(f);
3.顏色設(shè)置
應(yīng)用Graphics類的setColor()可以設(shè)置繪圖和輸出字符串時(shí)的顏色。
Java的Color構(gòu)造函數(shù)為
publicColor(intr,intg,intb)
顏色可以由三種基本顏色(紅、綠、藍(lán))的值來(lái)確定,該值為0~255之間的數(shù)值,各顏色值不同,構(gòu)成的顏色也不同。此外Java中還有一些顏色的常量,可以直接使用,如BLACK、BLUE、CYAN、DARK_GRAY、GRAY、GREEN、LIGHT_GRAY、MAGENTA、ORANGE、PINK、RED、WHITE、YELLOW等。例7-7為顏色設(shè)置,其程序運(yùn)行結(jié)果如圖7-8所示。圖7-8顏色設(shè)置
4.繪制圖形
在Java.Graphics類中,通過(guò)drawLine、drawOval、drawPolygn、drawRect等方法可以繪制直線、橢圓、多邊形、矩形等,通過(guò)fillArc、fillRect、fillPolygn、fillOval等方法可繪制覆蓋區(qū)域的圓弧、矩形、多邊形和橢圓等。
繪制直線:drawLine(intx1,inty1,intx2,inty2),其中x1和y1指定了起始點(diǎn)的坐標(biāo),x2和y2指定了終點(diǎn)的坐標(biāo),兩點(diǎn)連接形成一條直線。繪制矩形和填充矩形:drawRect(intx,inty,intwidth,intheight)、fillRect(intx,inty,intwidth,intheight),通過(guò)x和y來(lái)設(shè)置起點(diǎn)坐標(biāo),然后通過(guò)width和height來(lái)繪出矩形或矩形填充區(qū)域。
繪制圓角矩形和填充圓角矩形:drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)、fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight),通過(guò)arcHeight和arcWidth來(lái)設(shè)置圓角大小。同理,繪制三維矩形和填充三維矩形以及繪制橢圓和填充橢圓的方法如下:
draw3DRect(intx,inty,intwidth,intheight,booleanraised)
fill3DRect(intx,inty,intwidth,intheight,booleanraised)
drawOval(intx,inty,intwidth,intheight)
fillOval(intx,inty,intwidth,intheight)圖7-9繪制幾何圖形在Java后續(xù)版本中,開發(fā)了Java2D的圖形類,如Point2D、Line2D、Rectangle2D、Arc2D等都是Shape的接口,要實(shí)現(xiàn)一個(gè)2D圖形,需首先創(chuàng)建一個(gè)實(shí)現(xiàn)了Shape接口的2D類的實(shí)例對(duì)象,然后調(diào)用Graphics2D類的draw(Shape)方法。7.5.1圖像顯示
Java支持GIF、JPEG、PNG三種文件格式,要在Applet中顯示圖像,首先應(yīng)使用getImage方法加載圖像,然后使用drawImage方法顯示圖像。
1.加載圖像
getImage方法語(yǔ)法如下:
ImagegetImage(URLurl);
ImagegetImage(URLurl,Stringname);7.5Java與多媒體第一種方法可直接通過(guò)URL指定圖像文件的絕對(duì)URL地址。第二種方法可指定圖像文件的基地址和圖像文件的文件名,若圖像文件和Applet文件處在同一目錄中,則可以用getCodeBase()方法來(lái)獲取基地址;若圖像文件和Applet文件的描述HTML文件處在同一目錄中,則以getDocumentBase來(lái)獲取基地址。
2.顯示圖像
drawImage方法重構(gòu)有很多種方法,我們以基本方法為例來(lái)說(shuō)明,其余方法可參考JDK1.6.0API文檔。
例7-9為應(yīng)用drawImage()方法顯示圖像,其運(yùn)行效果如圖7-10所示。圖7-10圖像顯示7.5.2動(dòng)畫設(shè)計(jì)
Java的動(dòng)畫設(shè)計(jì)實(shí)際上是一個(gè)線程的應(yīng)用實(shí)例,通過(guò)不同時(shí)間調(diào)用不同的圖像文件來(lái)實(shí)現(xiàn)動(dòng)畫效果。首先在Applet初始化時(shí)將圖像加載至一圖像數(shù)組frame中,其次在Applet啟動(dòng)時(shí)同時(shí)啟動(dòng)延時(shí)線程,并且在Applet運(yùn)行期間先延時(shí),產(chǎn)生100ms的視覺暫停時(shí)間,然后調(diào)用repaint()方法顯示不同的圖像,不斷重復(fù)上述過(guò)程就形成了一個(gè)動(dòng)畫的效果。
【例7-10】動(dòng)畫演示。importjava.awt.*;
importjava.applet.Applet;
publicclassAnmiationextendsAppletimplementsRunnable
{
Imageframe[];
ThreadthreadNina;
intframe_i;
intdelay_time;
booleanRuning=true;
publicvoidinit()
{圖7-11Java動(dòng)畫7.5.3播放聲音
在java.applet包中集成了java.applet.AudioClip類,該類用于在Applet中播放聲音[1]。播放聲音是通過(guò)play方法來(lái)實(shí)現(xiàn)的。play方法的語(yǔ)法如下:
play(URLsoundDirectory,StringsoundFile);
play(URLsoundURL);
同加載圖像文件類似,采用第一種方法時(shí),URL用來(lái)指定聲音文件所在目錄,soundFile字符串用來(lái)指定所要播放的聲音文件名。若采用第二種方法,則直接由URL資源定位符指定所要播放聲音文件的URL地址。
[3]早期的JDK只支持播放8位、8kHz單通道的u律(.au)文件。JDK現(xiàn)在支持“.au”、“.aif”、“.mid”、“.wav”、“.rfm”文件。以下為在Applet的paint方法中直接調(diào)用play來(lái)播放“cuckoo.su”的聲音文件。
publicvoidpaint(Graphicsg)
{play(getDocumentBase(),“Sounds/spacemusic.au”);}
調(diào)用play方法時(shí),聲音文件只播放一次,如何實(shí)現(xiàn)循環(huán)播放或者可控播放呢?首先通過(guò)如下方式加載聲音文件:
AudioClipsound;
sound=getAudioClip(getDocumentBase(),“bark.au”);
其次通過(guò)聲音對(duì)象的sound.loop
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初二英語(yǔ)期中試卷單選題100道及答案
- 如何快速做好班組管理
- 中藥炮制工中級(jí)模擬考試題+參考答案
- 機(jī)械制造工藝考試題(含參考答案)
- 2025年政法學(xué)院網(wǎng)絡(luò)服務(wù)器主機(jī)托管協(xié)議
- 體育賽事運(yùn)作管理手冊(cè)
- 高科技窗簾知識(shí)培訓(xùn)課件
- 飯店水電工知識(shí)培訓(xùn)課件
- 2024重慶市巫溪縣職業(yè)教育中心工作人員招聘考試及答案
- 2024運(yùn)城市龍翔工業(yè)技術(shù)學(xué)校工作人員招聘考試及答案
- 2025-2030中國(guó)集裝箱化和模塊化數(shù)據(jù)中心行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析研究報(bào)告
- 2025-2030中國(guó)防腐新材料行業(yè)市場(chǎng)深度調(diào)研及發(fā)展策略與投資前景預(yù)測(cè)研究報(bào)告
- 2025年超高功率大噸位電弧爐項(xiàng)目發(fā)展計(jì)劃
- 2025年護(hù)工考試試題及答案
- 2024年四川省高等職業(yè)教育單獨(dú)考試招生文化素質(zhì)考試中職英語(yǔ)試卷
- 全國(guó)第9個(gè)近視防控月活動(dòng)總結(jié)
- 人教A版必修第二冊(cè)高一(下)數(shù)學(xué)6.3.2-6.3.3平面向量正交分解及坐標(biāo)表示【課件】
- 2025至2030年中國(guó)快速換模系統(tǒng)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 高速公路修補(bǔ)合同協(xié)議
- 航空業(yè)勞動(dòng)力安全保障措施
- 《肺功能康復(fù)鍛煉》課件
評(píng)論
0/150
提交評(píng)論