Java语言程序设计讲义第九章.docx

上传人:b****5 文档编号:5732005 上传时间:2022-12-31 格式:DOCX 页数:11 大小:18.43KB
下载 相关 举报
Java语言程序设计讲义第九章.docx_第1页
第1页 / 共11页
Java语言程序设计讲义第九章.docx_第2页
第2页 / 共11页
Java语言程序设计讲义第九章.docx_第3页
第3页 / 共11页
Java语言程序设计讲义第九章.docx_第4页
第4页 / 共11页
Java语言程序设计讲义第九章.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Java语言程序设计讲义第九章.docx

《Java语言程序设计讲义第九章.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计讲义第九章.docx(11页珍藏版)》请在冰豆网上搜索。

Java语言程序设计讲义第九章.docx

Java语言程序设计讲义第九章

第九章JavaApplet

主要内容:

JavaApplet和JavaApplication的区别及JavaApplet的应用

9.1JavaApplet和JavaApplication

(1)Application是独立运行的,Applet是嵌入到Web页面上的,必须在支持Java的浏览器中运行,例如,NetscapeNavigator,MicrosoftIE,SunHotJava等。

(2)Application必定含有一个,并且只有一个方法main()。

Applet无方法main(),并从java.applet.Applet继承。

(3)Application是能进行各种操作的程序,包括读/写文件操作。

但Applet对站点的磁盘文件既不能进行读操作,也不能进行写操作。

9.2JavaApplet的生命周期

1.JavaApplet从建立到执行可分为四步:

(1)用Java语言编写一个Applet源程序。

(2)把Applet源程序编译成字节码。

(3)将字节码嵌入Web页面。

即写一个含Applet的HTML文件。

(4)用支持Java的浏览器运行、浏览。

2.Applet的生命周期

即,JavaApplet的执行过程,它涉及的基本方法如下:

(1)初始化init()

为Applet运行建立初始化环境,在整个Applet生命周期中,只执行一次方法init()。

(2)启动start()

Applet被初始化后,系统会自动调用方法start()。

当进入或返回Applet所在的Web页面时,均需多次执行方法start()。

(3)停止stop()

当浏览器离开Applet所在的Web页面转到其它页面时,Applet被停止。

(4)删除destory()

当浏览器结束浏览时,执行方法destory(),释放Applet占用的资源。

在执行方法destory()前,先执行方法stop()。

(5)绘图paint()

将Applet自身的效果显示在Web页面上。

例9.1

JavaApplication程序结构:

publicclassHelloWorldApp

{<变量定义>

<方法定义>

publicstaticvoidmain(Stringargs[]){

System.out.println("Helloworld");

}

}

JavaApplet程序结构

importjava.awt.*

importjava.applet.*

publicclassHelloworldAppletextendsApplet{

init(){}

start(){}

stop(){}

destroy(){}

publicvoidpaint(Graphicsg){

drawString("HelloWorld!

",20,20);

}

}

嵌入HTML,文件名为Applet_Example.html。

anAppletExample

WIDTH=200HEIGHT=40CODEBASE=JavaApplet>

…..

9.3JavaApplet与多媒体

1声音

●Java从网络上获取声音文件并播放声音的编程方法有两类:

✓利用Java语言提供的play(URL)及play(URL,String),直接播放网络上的声音文件。

✓利用java.applet中的类及接口AudioClip,通过getAudioClip(URL)或getAudioClip(URL,String)先从网络上获取声音文件,并生成AudioClip类型的对象,然后对该对象进行操作。

●Applet提供方法用来获取声音文件的数据:

AudioClipgetAudioClip(URLurl);

AudioClipgetAudioClip(URLurl,Stringname);

例如:

AudioClipsound=getAudioClip(getCodeBase(),"music.au");

●在类Applet中,getDocumentBase()返回包含此Applet主页的URL地址。

getCodeBase()返回包含此Applet本身的URL地址。

●当Applet获取声音文件的数据后,可通过AudioClip所定义的方法来控制声音的播放:

voidplay(),播放声音;

voidstop(),停止播放;

voidloop(),循环播放;

✓直接播放网络上的声音文件

StringSoundurl="结点URL";

try{

play(newURL(Soundurl));//或

play(newURL(Soundurl),声音文件名);

}

catch(Exceptione){}

✓利用java.applet中的类及接口AudioClip

StringSoundurl="结点URL";

AudioClipsound;

try{

sound=getAudioClip(newURL(Soundurl));//sound=getAudioClip(newURL(Soundurl),声音文件名);

}

catch(Exceptione){

System.out.println("Can'topentheURL");

}

✓以上都是将生成的URL对象“newURL(Soundurl)”直接作为play()或getAudioClip()的参数

✓也可先用“newURL(Soundurl)”获取一个URL对象,再传给play()或getAudioClip()。

URLSoundurl=null;

try{

Soundurl=newURL("结点URL");

}

catch(Exceptione){

System.out.println("Can'topentheURL");

}

play(Soundurl);

例9.2

importjava.applet.*;

importjava.awt.*;

import.*;

publicclasssound1extendsApplet{

publicvoidpaint(Graphicsg){

StringSoundurl=

"

try{

play(newURL(Soundurl));

}

catch(Exceptione){}

}

}

例9.3

importjava.applet.*;

importjava.awt.*;

import.*;

publicclasssound2extendsApplet{

publicvoidpaint(Graphicsg){

StringSoundurl="

try{

play(newURL(Soundurl),"music.au");

}

catch(Exceptione){}

}

}

例9.4

importjava.applet.*;

importjava.awt.*;

import.*;

publicclasssound3extendsApplet{

AudioClipsound;

publicvoidinit(){

StringSoundurl=

"

try{

sound=getAudioClip(newURL(Soundurl));

}

catch(Exceptione){}

}

publicvoidpaint(Graphicsg){

sound.loop();

}

}

例9.5

importjava.applet.*;

importjava.awt.*;

import.*;

publicclasssound4extendsApplet{

AudioClipsound;

URLauur;

publicvoidinit(){

try{

auur=newURL("

}

catch(MalformedURLExceptione){

System.out.println("Can'topentheURL");

}

sound=getAudioClip(auur,"music.au");

}

publicvoidpaint(Graphicsg){

sound.loop();

}

}

2AWT绘图

●类Component在包java.awt中定义,通过它可以绘制或填充各种几何图形,输出文字或显示图象,还可设置或获得当前字体,绘图区域,绘图方式等。

●类Component定义了三个支持绘图的方法:

✓voidrepaint();

✓voidupdate(Graphicsg);

✓voidpaint(Graphicsg);

●除Component外,java.awt还提供了另一些支持绘图的类:

✓类Dimension(封装一个组件的宽度和高度)

✓类FontFontMetrics(设置字体和字体尺寸)

✓类Image(封装一个图象)

✓类Canvas(绘图常常是画到画布上)

✓类Graphics(绘制基本图形,包括直线,矩行,椭圆弧,圆弧,和多边形)。

其方法原型如下:

publicvoiddrawLine(intx1,inty1,intx2,inty2);

publicvoiddrawArc(intx,inty,intwidth,intheight,

intstartAngle,intarcAngle);

publicvoiddrawPolygon(Polygonp);

✓Color类

(1)awt预定义的颜色,black、red、blue、gray等。

(2)RBG(红绿蓝)值合成的颜色,值可取为0—255。

SetColor(Color.c);//设置图形颜色(java.awt.Graphics)

SetBackground(Color.c);//设置背景颜色(java.awt.Component)

例如:

Graphicsg=newGraphics;

Componentk=newComponent;

g.setColor(color.red);

k.setBackground(color.blue);

例9.6类Polygon用来设置多边形的顶点。

importjava.awt.*;

importjava.applet.*;

publicclassDrawTestextendsApplet{

publicvoidpaint(Graphicsg){

g.drawArc(20,20,70,40,45,270);

g.drawLine(100,20,200,80);

Polygonp=newPolygon();

p.addPoint(300,10);

p.addPoint(275,90);

p.addPoint(340,40);

p.addPoint(260,40);

p.addPoint(325,90);

g.drawPolygon(p);

g.drawRect(360,20,100,80);

}

}

3文字

●设置字体和颜色可方法setFont(),setBackground(),setForeground()来实现。

●也可以通过类Graphics输出文字,相应的方法有:

✓voiddrawBytes(bytedata[],intoffset,intlenth,intx,inty);

✓voiddrawChars(bytedata[],intoffset,intlenth,intx,inty);

✓voiddrawString(Stringstr,intx,inty);

(1)Font

●通过类Graphics和组件的方法getFont(),setFont()获取或设置当前使用的字体。

●通过getToolkit(),getFontList()得到系统所支持的各种字体。

例:

Fontf;

f=newFont(Font.Courier,Font.plain,18);

Graphicsg.setFont(f);

g.drawString("FONT",0,0);

(2)FontMetrics

FontMetrics表示字体的大小,通过它可以得到字体在特定屏幕上的尺寸。

4图象

●在包java.awt,java.awt.image及java.applet中都有对图象的支持。

●目前Java所处理的图象格式包括GIF和JPEG两种。

(1)图象装入

●Applet:

✓ImagegetImage(URLurl);

✓ImagegetImage(URLurl,Stringname);

●Application:

✓Imageimg=getToolkit().getImage("si.jpg");

✓Imageimg=Toolkit.getDefaultToolkit().getImage("si.jpg");

(2)图象显示

显示图象是通过类的drawImage()方法来实现的。

✓booleandrawImage(Imageimg,intx,inty,ImageObserverobserver)

✓booleandrawImage(Imageimg,intx,inty,Colorbgcolor,

ImageObserverobserver)

✓booleandrawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver)

✓booleandrawImage(Imageimg,intx,inty,intwidth,intheight,Colorbgcolor,ImageObserverobserver)

例9.7

importjava.applet.*;

importjava.awt.*;

publicclassimageTest1extendsApplet{

Imageimage;

publicvoidinit(){

image=getImage(getDocumentBase(),"imagetest.gif");

}

publicvoidpaint(Graphicsg){

g.drawImage(image,0,0,this);

}

}

例9.8

importjava.applet.*;

import.*;

importjava.awt.*;

publicclassimag1extendsApplet{

Imageimage;

publicvoidinit(){

Stringurl="

try{

image=getImage(newURL(url));

}

catch(Exceptione){}

}

publicvoidpaint(Graphicsg){

g.drawImage(image,0,0,this);

}

}

例9.9

importjava.applet.*;

import.*;

importjava.awt.*;

publicclassimag2extendsApplet{

Imageimage;

URLimgur=null;

publicvoidinit(){

try{

imgur=newURL("

}

catch(MalformedURLExceptione){

System.out.println("Can'topentheURL");

}

image=getImage(imgur);

}

publicvoidpaint(Graphicsg){

g.drawImage(image,0,0,this);

}

}

(3)图象跟踪

●MediaTracker

✓MediaTracker中定义了几个标志表示图象的载入情况。

(ABORTED,COMPLETE,ERRORED,LOADING)

MediaTracker(Componentcomp);

voidaddImage(Imageimg,intid);

voidaddImage(Imageimg,intid,intw,inth);

✓对下载情况的跟踪可通过checkID(),checkAll()方法。

●ImagObserver

✓监视图象的载入情况,它是一个接口,定义了一些常量标志,如ABORT,ERROR,ALLBITS等,用以判断图象的载入情况。

✓它定义的方法只有imageUpdate(),其接口为:

booleanimageUpdate(Imageimg,intinfoflags,intx,

inty,intwidth,intheight);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1