




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
10.1什么是Applet10.2Applet方法介紹10.3Applet的AWT繪制10.4Applet的參數(shù)傳遞10.5Applet的多媒體支持10.6Java存檔文件第10章
JavaApplet1.Applet概念JavaApplet也稱為小應(yīng)用程序,它是網(wǎng)頁內(nèi)容的一個(gè)組成局部在HTML中通過以下標(biāo)記來標(biāo)識(shí)一個(gè)Applet.
<appletcode="myapplet.class"height=200width=300>
</applet>其中,code、height、width是3個(gè)必須的屬性,code指定Applet的字節(jié)碼文件名;height和width決定Applet在頁面中的大小,分別規(guī)定高度和寬度??蛇x屬性除了以上3個(gè)根本屬性外,Applet中還提供一些可選屬性:alt為小應(yīng)用程序的說明信息,當(dāng)瀏覽器不支持Java時(shí)將在Applet所處位置顯示該信息。
Align屬性用來控制Applet在頁面中的相對(duì)對(duì)齊方式。Align值為left表示左對(duì)齊,right表示右對(duì)齊,middle表示居中對(duì)齊。
HSPACE和VSPACE屬性分別用來設(shè)定Applet與周圍文本之間的水平和垂直間距〔單位為像素〕??蛇x屬性(續(xù)〕CODEBASE屬性用于指示Applet類文件的URL路徑。默認(rèn)情況下,Applet類文件與HTML文件放在同一文件夾下。如果Applet是存放在另一文件夾下,那么要指示與HTML文件的相對(duì)路徑或者某個(gè)絕對(duì)URL路徑。下例表示類文件在HTML文件所處路徑的java子文件夾下。<appletcode="myapplet.class“codebase="java"height=200width=300></applet>2.查看Applet執(zhí)行在支持Java的瀏覽器頁面中運(yùn)行使用J2SDK提供的Appletviewer程序查看10.2Applet方法介紹init()方法
---Applet實(shí)例的初始化工作start()方法paint()方法---調(diào)整瀏覽窗口大小、縮放瀏覽窗口、移動(dòng)窗口或刷新等操作都會(huì)導(dǎo)致執(zhí)行paint()方法實(shí)現(xiàn)Applet重繪stop()方法destroy()方法update()方法repaint()方法repaint()--->update(g)--->paint(g)
Applet方法執(zhí)行過程【例10-1】一個(gè)驗(yàn)證Applet方法執(zhí)行次數(shù)的測(cè)試程序。importjava.awt.*;importjava.applet.*;publicclassCountextendsApplet{ intstartCount=0; intpaintCount=0; publicvoidstart(){ startCount++; } publicvoidpaint(Graphicsg){ paintCount++; g.drawString(“start()=”+startCount,100,30); g.drawString(“paint()=”+paintCount,160,30); }}10.2Java的圖形繪制10.2.1Java圖形坐標(biāo)10.2.2各類圖形的繪制方法drawLine(intx1,inty1,intx2,inty2)drawRect(intx,inty,intwidth,intheight)drawOval(intx,inty,intwidth,intheight)
drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)drawPolygon(int[]xPoints,int[]yPoints,intnPoints)drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)
10.2.2各類圖形的繪制方法〔續(xù)〕fillOval(intx,inty,intwidth,intheight)fillRect(intx,inty,intwidth,intheight)
fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight)fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)
例10-2繪制一個(gè)微笑的人臉
importjava.awt.*;importjava.applet.*;publicclasssmilepeopleextendsApplet{
publicvoidpaint(Graphicsg)
{
g.drawString("永遠(yuǎn)微笑!!",50,30);
g.drawOval(60,60,200,200);
g.fillOval(90,120,50,20);
g.fillOval(190,120,50,20);
g.drawLine(165,125,165,175);g.drawLine(165,175,150,160);
g.drawArc(110,130,95,95,0,-180);
}}等級(jí)考試題---程序補(bǔ)充完整importjava.applet.*;importjava.awt.Graphics;//*********Found********publicclassJava_1extends__________________{publicvoidpaint(Graphicsg){//*********Found********g._______________("歡送你來參加Java語言考試!",25,25);}}10.2.3顯示文字FontmyFont=newFont("宋體",Font.BOLD,12);
定義字體為宋體,大小為12號(hào),粗體。Font.PLAIN,F(xiàn)ont.ITALIC,F(xiàn)ont.BOLD分別表示普通、斜體和粗體,如果要同時(shí)兼有幾種風(fēng)格可以通過"+"號(hào)連接。例如:newFont("TimesRoman",Font.BOLD+Font.ITALIC,28);
給圖形對(duì)象或GUI部件設(shè)置字體利用Graphics類的setFont()方法確定使用定義的字體
g.setFont(myFont);給某個(gè)GUI部件設(shè)定字體可以使用該部件的setFont()方法。例如:
Buttonbtn=newButton("確定");
btn.setFont(myFont);使用getFont()方法返回當(dāng)前的Graphics對(duì)象或GUI部件使用的字體。用FontMetrics類獲得字體的更多信息
用Component類提供的getFontMetrics(Font)方法得到一個(gè)FontMetrics對(duì)象引用。以下為FontMetrics的方法:intstringWidth(Stringstr)
返回給定字符串所占寬度intgetHeight()
獲得字體的高度intcharWidth(charch)
返回給定字符的寬度例10-3在Applet的中央顯示"歡送您!"importjava.awt.*;
publicclassFontDemoextendsjava.applet.Applet{
publicvoidpaint(Graphicsg){
Stringstr="歡送您!";
Fontf=newFont("黑體",Font.PLAIN,24);
g.setFont(f);
FontMetricsfm=getFontMetrics(f);
intx=(getWidth()-fm.stringWidth(str))/2;
inty=getHeight()/2;
g.drawString(str,x,y);
}
}返回APPLET部件的高度
10.2.4顏色控制publicColor(intRed,intGreen,intBlue)每個(gè)參數(shù)的取值范圍在0~255之間
publicColor(floatRed,floatGreen,floatBlue)每個(gè)參數(shù)的取值范圍在0.0~1.0之間
publicColor(intRGB)類似HTML網(wǎng)頁中用數(shù)值設(shè)置顏色。顏色常量顏色常量RGBblack0,0,0
blue0,0,255cyan0,255,255darkGray64,64,64gray128,128,128green0,255,0lightGray192,192,192magenta255,0,255orange255,200,0pink255,175,175red255,0,0white255,255,255
yellow255,255,0顏色處理常用方法畫筆提供了如下方法:setColor(Color.blue);//將畫筆定為蘭色getColor()--獲取當(dāng)前的繪圖顏色。Component類中定義方法setBackground()方法----設(shè)置組件的背景色setForeground()方法----設(shè)置組件的前景色getBackground()getForeground()思考:設(shè)置一個(gè)紅色按鈕,上面寫黃色字如何實(shí)現(xiàn)?Java繪圖模式(1)覆蓋模式:繪制圖形像素覆蓋屏幕上已有像素信息。缺省的繪圖模式為覆蓋模式。(2)異或模式:繪制圖形像素與屏幕上像素信息進(jìn)行異或運(yùn)算,以運(yùn)算結(jié)果作為顯示結(jié)果。異或模式由Graphics類的setXORMode()方法來設(shè)置setXORMode(Colorc)其中,參數(shù)c用于指定XOR顏色。進(jìn)行異或繪圖時(shí),如果區(qū)域內(nèi)無顏色,應(yīng)按畫筆顏色繪出圖形;如果區(qū)域內(nèi)已存在畫筆顏色或指定的XOR顏色,那么異或操作結(jié)果是在這兩個(gè)顏色間進(jìn)行互相更替;如區(qū)域內(nèi)內(nèi)為其它顏色,那么按該顏色和畫筆顏色進(jìn)行異或操作后得到的顏色繪圖。在異或模式下,重復(fù)繪制相同圖形將起到檫除圖形的效果。10.2.5Java2D圖形繪制所有Graphics2D圖形在包中定義〔1〕線段Line2D.Floatline=newLine2D.Float(60,12,80,40)〔2〕矩形用Rectangle2D.Float或Rectangle2D.Double創(chuàng)立。4個(gè)參數(shù)分別代表左上角的X、Y坐標(biāo),寬度、高度。〔3〕橢圓Ellipse2D.Floatty=newEllipse2D.Float(113,20,30,40);〔4〕弧用Arc2D.Float或Arc2D.Double創(chuàng)立。接收7個(gè)參數(shù),前面4個(gè)參數(shù)對(duì)應(yīng)圓弧所屬橢圓的信息,后面3個(gè)參數(shù)分別是弧的起始角度、弧環(huán)繞的角度、閉合方式?;〉拈]合方式:Arc2D.OPEN〔不閉合〕Arc2D.CHORD〔使用線段連接弧的兩端點(diǎn)〕Arc2D.PIE〔將弧的端點(diǎn)與橢圓中心連接起來?!?〕多邊形GeneralPathpolly=newGeneralPath();GeneralPath提供了很多方法定義多邊形的軌跡,常用的幾個(gè)方法如下。voidmoveTo(doublex,doubley):將指定點(diǎn)參加到路徑。voidlineTo(doublex,doubley):將指定點(diǎn)參加路徑,用直線連接當(dāng)前點(diǎn)到指定點(diǎn)。voidclosePath():將多邊形的終點(diǎn)與始點(diǎn)閉合。2.指定填充圖案用setPaint(Paint)方法指定填充方式以下幾個(gè)類均實(shí)現(xiàn)了Paint接口。Color:?jiǎn)紊畛?。GradientPaint:漸變填充。TexturePaint:紋理填充。以漸變填充為例〔1〕GradientPaint(x1,y1,color1,x2,y2,color2)〔2〕GradientPaint(x1,y1,color1,x2,y2,color2,booleancyclic)3.設(shè)置畫筆可以通過setStroke()方法并用BasicStroke對(duì)象作為參數(shù),可設(shè)置繪制圖形線條的寬度和連接形狀。BasicStroke(floatwidth)。BasicStroke(floatwidth,intcap,intjoin)。BasicStroke(floatwidth,intcap,intjoin,floatmiterlimit,float[]dash,floatdash_phase)。4.繪制圖形voidfill(Shapes):繪制一個(gè)填充的圖形。voiddraw(Shapes):繪制圖形的邊框?!纠?0-4】利用Graphics2D繪制矩形importjava.awt.*;importjava.applet.*;importjava.awt.geom.*;publicclassGradientTestextendsApplet{publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;Rectangle2Dr=newRectangle2D.Double(25,20,150,50);GradientPaintp=newGradientPaint(25,20,Color.yellow,300,90,Color.green);g2d.setPaint(p); g2d.fill(r); g2d.setPaint(Color.blue);g2d.setStroke(newBasicStroke(5,BasicStroke.CAP_BUTT,
BasicStroke.JOIN_ROUND));g2d.draw(r);}}【例10-5】繪制數(shù)學(xué)函數(shù)y=sin(x)的曲線〔其中,x的取值為0~360〕。importjava.awt.*;importjava.awt.geom.*;importjava.applet.*;publicclasssinCurveextendsApplet{publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;intoffx=40;
//坐標(biāo)軸原點(diǎn)的Xintoffy=80;//坐標(biāo)軸原點(diǎn)的Y/*以下繪制X,Y坐標(biāo)軸*/g2d.setPaint(Color.blue);g2d.setStroke(newBasicStroke(2));//設(shè)置2個(gè)像素的線條寬度g2d.draw(newLine2D.Float(offx+0,offy-60,offx+0,offy+60));g2d.draw(newLine2D.Float(offx-5,offy-57,offx+0,offy-60));g2d.draw(newLine2D.Float(offx+5,offy-57,offx+0,offy-60));g2d.draw(newLine2D.Float(offx+0,offy+0,offx+380,offy+0));g2d.draw(newLine2D.Float(offx+376,offy-5,offx+380,offy+0));g2d.draw(newLine2D.Float(offx+376,offy+5,offx+380,offy+0));g2d.drawString("x",offx+385,offy);g2d.drawString("y",offx,offy-66);/*以下利用多邊形描繪曲線*/
GeneralPathpolly=newGeneralPath();polly.moveTo(offx,offy);for(intjd=0;jd<=360;jd++){floatx=jd;floaty=(float)(50*Math.sin(jd*Math.PI/180.));polly.lineTo(offx+x,offy-y);}g2d.setPaint(Color.red);g2d.draw(polly);//繪制sin曲線}}5.圖形繪制的變換AffineTransformtrans=newAffineTransform();AffineTransform提供了如下方法實(shí)現(xiàn)3種最常用的圖形變換操作。translate(doublea,doubleb):將圖形坐標(biāo)偏移到a,b處;繪制圖形時(shí),按新原點(diǎn)確定坐標(biāo)位置。scale(doublea,doubleb):將圖形在X軸方向縮放a倍,Y軸方向縮放b倍。rotate(doubleangle,doublex,doubley):將圖形按(x,y)為軸中心旋轉(zhuǎn)angle個(gè)弧度。將Graphics2D“畫筆”對(duì)象設(shè)置為采用該變換。g2d.setTransform(trans);10.4.1在HTML文件中給Applet提供參數(shù)<appletcode=“My_param.class”height=200width=300>
<paramname=“vs”value=“顯示字符串">
<paramname="size"value=24>
</applet>
在Applet利用getParamter("參數(shù)名")方法獲取HTML傳遞的參數(shù)值。
Strings=getParameter("vs");intsize=Integer.parseInt(getParameter("size"));例10-6利用Applet參數(shù)傳遞繪制圖形信息
將各種圖形命令存儲(chǔ)在字符串中,每條命令之間用符號(hào)“/”分隔,一條命令以一個(gè)識(shí)別符開頭,后跟假設(shè)干參數(shù),命令和參數(shù)之間用“,”分隔。例如:以下為程序中的兩條命令:rect,x,y,w,h//繪制矩形,其中,rect為命令識(shí)別符oval,x,y,w,h//繪制橢圓,其中,oval為命令識(shí)別符HTM文件<html><body><appletcode="ParaDraw.class"width=200height=200>
<paramname="graph"
value="rect,10,20,100,110/oval,40,60,50,50/rect,20,30,110,120">
</applet></body></html>例10-6利用Applet參數(shù)傳遞繪制圖形信息importjava.applet.Applet;importjava.awt.Graphics;publicclassParaDrawextendsApplet{Stringgraph;publicvoidinit(){graph=getParameter("graph");}
publicvoidpaint(Graphicsg) {Stringpara[];intx,y,w,h; Stringcommands[]=graph.split("/");for(intk=0;k<commands.length;k++){ para=commands[k].split(",");if(para[0].equals("oval")){
x=Integer.parseInt(para[1]); y=Integer.parseInt(para[2]); w=Integer.parseInt(para[3]); h=Integer.parseInt(para[4]); g.drawOval(x,y,w,h); } 例10-6〔續(xù)1〕elseif(para[0].equals("rect")){
x=Integer.parseInt(para[1]); y=Integer.parseInt(para[2]); w=Integer.parseInt(para[3]); h=Integer.parseInt(para[4]); g.drawRect(x,y,w,h); }}}}例10-6〔續(xù)2〕1.圖像的獲取publicImagegetImage(URL,String)利用如下兩個(gè)方法得到絕對(duì)地址:(1)getCodeBase():Applet字節(jié)碼文件的URL地址。(2)getDocumentBase():html文件的URL地址。
2.圖像繪制publicvoiddrawImage(Image,x,y,
imageObserver)
監(jiān)視圖象下載,獲取圖像的構(gòu)建信息★【例10-7】繪制隨機(jī)產(chǎn)生的假設(shè)干火柴#01importjava.awt.*;#02importjava.applet.*;#03publicclassDrawMatchextendsApplet{#04 Imageimg;//火柴圖像#05 intsx=10,sy=10;//第1根火柴左上角位置#06 intw=4;//火柴寬度#07#08 publicvoidinit(){#09 img=createImage(6,30);//用于繪制1根火柴#10 Graphicsg=img.getGraphics();#11 g.setColor(Color.orange);#12 g.fillRect(0,0,6,25);//火柴桿#13 g.setColor(Color.red);#14 g.fillRect(0,25,6,5);//火柴頭#15 }#17 publicvoidpaint(Graphicsg){#18 intx=5+(int)(Math.random()*15);#19 for(intk=0;k<x;k++)#20 g.drawImage(img,sx+k*2*w,sy,this);#21 }#22}例10-8
通過圖片的更換顯示形成動(dòng)畫importjava.applet.*;importjava.awt.*;publicclassShowAnimatorextendsApplet{
Image[]m_Images;
inttotalImages=18;
intcurrentImage=0;
publicvoidinit(){
m_Images=newImage[totalImages];
for(inti=0;i<totalImages;i++)
m_Images[i]=getImage(getDocumentBase(),"images\\img00"+(i+1)+".gif");}例10-8
通過圖片的更換顯示形成動(dòng)畫(續(xù)〕
publicvoidstart(){
currentImage=0;
}publicvoidpaint(Graphicsg){g.drawImage(m_Images[currentImage],10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 焦化廠安全標(biāo)準(zhǔn)化建設(shè)與創(chuàng)新培訓(xùn)體系
- 2022-2023學(xué)年湖南省岳陽市四年級(jí)下學(xué)期期末語文真題及答案
- 學(xué)校德育個(gè)人工作總結(jié)模版
- 《公民參與政治生活》課件
- 《股骨頸骨折護(hù)理查房》課件
- 甘肅省武威市涼州區(qū)新華、古城九年制學(xué)校2025年中考二模道德與法治試卷(含答案)
- 2025企業(yè)雇傭短期工合同范本
- 2025華東西師范大學(xué)資產(chǎn)管理系統(tǒng)項(xiàng)目合同
- 公共關(guān)系社交禮儀實(shí)務(wù)指南
- 2023年內(nèi)蒙古興安盟中考地理真題及答案
- GA/T 1068-2015刑事案件命名規(guī)則
- 主治醫(yī)師聘用合同
- 全國統(tǒng)一市政工程預(yù)算定額2002版
- 2021年四川綿竹高發(fā)投資有限公司招聘筆試試題及答案解析
- 建設(shè)工程消防驗(yàn)收備案抽查復(fù)查申請(qǐng)表
- 水費(fèi)計(jì)算、水權(quán)與水價(jià)課件
- 思想道德與法治課件:第六章 第一節(jié) 社會(huì)主義法律的特征和運(yùn)行
- 《康復(fù)醫(yī)學(xué)》第四章 常見疾病的康復(fù) 第二節(jié) 腫瘤康復(fù)課件
- 61850報(bào)文解析-深瑞版-131016
- 江西新定額2017土建定額說明及解釋
- 國家電網(wǎng)有限公司十八項(xiàng)電網(wǎng)重大反事故措施(修訂版)-2018版(word文檔良心出品)
評(píng)論
0/150
提交評(píng)論