Java大学实用教程 第13章 Java Applet
Java Applet 基础
Applet 是一种Java 程序。
它一般运行在支持Java 的Web 浏览器内。
因为它有完整的Java API支持,所以Applet 是一个全功能的Java 应用程序。
如下所示是独立的Java 应用程序和applet 程序之间重要的不同:Java 中Applet 类继承了java.applet.Applet 类。
Applet 类没有定义main(),所以一个Applet 程序不会调用main() 方法。
Applet 被设计为嵌入在一个HTML 页面。
当用户浏览包含Applet 的HTML 页面,Applet 的代码就被下载到用户的机器上。
要查看一个Applet 需要JVM。
JVM 可以是Web 浏览器的一个插件,或一个独立的运行时环境。
用户机器上的JVM 创建一个Applet 类的实例,并调用Applet 生命周期过程中的各种方法。
Applet 有Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
Applet 需要的其他类可以用Java 归档(JAR)文件的形式下载下来。
Applet的生命周期Applet 类中的四个方法给我们提供了一个框架,你可以在该框架上开发小程序: init: 该方法的目的是为你的Applet 提供所需的任何初始化。
在Applet 标记内的param 标签被处理后调用该方法。
∙start:浏览器调用init 方法后,该方法被自动调用。
每当用户从其他页面返回到包含Applet 的页面时,则调用该方法。
∙stop:当用户从包含Applet 的页面移除的时候,该方法自动被调用。
因此,可以在相同的Applet 中反复调用该方法。
∙destroy: 此方法仅当浏览器正常关闭时调用。
因为Applet 只有在HTML 网页上有效,所以你不应该在用户离开包含Applet 的页面后遗漏任何资源。
∙paint:该方法在start() 方法之后立即被调用,或者在Applet 需要重绘在浏览器的时候调用。
Java-Applet
Java的 Java的type conversion
• 种类
– Identify conversion, Widening primitive conversion, conversion, Narrowing primitive conversion, conversion, Widening reference conversion, Narrowing conversion, reference conversion, String conversion conversion,
方法的覆盖和域的隐藏有区别 方法的覆盖和域的隐藏有区别
class A { int i = 1; int f() {return i; } } class B extends A ( int i = 2; int f() {return -i;} } public class override_vs_hide { public static void main(String[] args) { B b = new B(); System.out.println(b.i); // 2
例子
X x = new X(); SubX sx = new SubX(); Identity, Assignment conversion x = sx; Widening reference, Assignment conversion SubX sxx = (SubX) X; Narrowing reference, Assignment conversion (runtime) Integer num = (Integer) sxx; ClassCastException
• C1, C2做方法覆盖; 可用, 但概念不清, 动态方 C2做方法覆盖; 可用, 但概念不清, 法查找费时
Java_applet
• 其他可选的参数: • Codebase:当Applet文件与HTML文档不在同一目录时, 使用 codebase来指明字节码文件的位臵,这个位臵使用URL格式
– 例:CODEBASE=/Applet
• align:表示Applet界面区域在浏览器窗口中的对齐情况
•
部
*这些参数都应该包含在<applet>标记的右半尖括号的内
applet的初始化与终止的方法 图示
applet生命周期的一个示例
import java.awt.*; import java.applet.Applet; public class Ex3_1 extends Applet{ public void init(){ System.out.println("init()method called!"); } public void start(){ System.out.println("start() method called!"); } public void stop() { System.out.println("stop() method called!"); } public void destroy() { System.out.println("destroy () method called!"); } public void paint(Graphics g){ g.drawString("Hello World!",50,80); System.out.println("paint() method called!"); } }
Applet与HTML文件的配合
java Applet知识要点讲解
第 10 页 2015/12/2 19:03
2.Applet的运行控制
【例8.2】
例5.4创建了一个具有两个按钮的独立 应用程序,现在将这个程序改造成一个 Applet , 并在 Web 浏览器中执行这个 Applet 。在实现这个 Applet 时,覆盖start() 和stop()方法,显示附加文 本。
第 14 页 2015/12/2 19:03
8.2.1 <APPLET>标记属性
ALT = alternateText 如果浏览器支持Applet但不能运行它,就显示 alternateText中所给出的文字;否则就忽略它。 WIDTH = pixels HEIGHT = pixels Applet在浏览器中所显示的高度和宽度(以象素为单位)。 ALIGN = alignment Applet在浏览器中显示时的对齐方式,其含义与效果与图 片在HTML中的一样。其取值有: left, right, top, texttop, middle, absmiddle, baseline, bottom, absbottom。 VSPACE = pixels HSPACE = pixels Applet在浏览器中显示时上下、左右要预留的高度和宽度, 其含义与效果与图片在HTML中的一样。
Java讲义19-Java Applet 介绍
声音处理
Applet类中与声音有关的方法
public void play(URL url) public void play(URL url,String name) public final static AudioClip newAudioClip(URL url) public AudioClip getAudioClip(URL url) public AudioClip getAudioClip(URL url,String name)
使用Applet控制浏览器
得到当前运行页的环境上下文 AppletContext对象 public AppletContext getAppletContext();
使用Applet控制浏览器
AppletContext类的常用方法
显示url指定的Web页 void showDocument(URL url) void showDocument(URL url,String target) void showStatus(String status)
控制其他Applet
import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet8_Controller extends Applet implements MouseMotionListener{ Applet8 applet8; public void init(){ addMouseMotionListener(this); setBackground(Color.red); } public void mouseMoved(MouseEvent me){ if(applet8==null) applet8=(Applet8)getAppletContext().getApplet("applet8"); applet8.moveLabel(me.getX(), me.getY()); } public void mouseDragged(MouseEvent me){} }
JAVA Applet
Applet的生命周期
• destroy只执行一次。用来释放资源,在 stop( )方法之后执行。 • 浏览器正常关闭时,Java自动调用该方法。 destroy( )方法用于释放applet占用的、由本 地操作系统管理的任何系统资源。当然, 如果小应用程序仍然处于活动状态,Java会 在调用destroy( )方法之前,调用stop( )方法。来自Applet的运行控制关系
Applet的生命周期
• applet的生命周期主要有五个状态:创建、初始化、开始运行/ 重新运行、停止和消亡。applet不需要特别创建,会有运行时 环境根据HTML页面中的<Applet>标记在Web浏览器或 appletviewer中自动创建。创建后,applet就调用init( )方法,该 方法能加载applet参数和执行必要的初始化处理,从而完成 applet的初始化工作。接着调用start( )方法,applet程序开始执 行,start( )方法是applet初次执行或重新执行的入口。当applet 页面所在的浏览器窗口图标化或转到其他页面时,applet执行 stop( )方法,可停止applet的执行。如果浏览器又重新加载该 applet页面,或者浏览器窗口解除图标化,则applet调用start( ) 方法,重新执行。如果关闭浏览器,则applet调用destroy( )方法, 进行终止处理,结束applet的生命周期。
JAVA Applet
概述
• 含有applet的网页中必须带有<Applet>标记,当支持 Java的浏览器遇到该标记时,就会下载相应的applet 代码并在本地计算机上执行。因此网页中的 <Applet>标记应提供相应的信息,至少应包含以下 三点:①.字节码文件名(编译后的Java文件, 以.class为后缀);②.字节码文件的地址(文件的位 置);③.在网页上显示applet的方式(大小等的控 制)。这样,浏览器就可以找到想要下载的applet 代码并按指定的方式运行。 • HTML增加applet有关的内容能够使网页更加富有生 气,如添加声音、动画等吸引人的特征,但并不会 改变HTML中与applet无关的元素。
Java语言程序设计-第13章PPT教学课件
类成员声明
5
applet程序的建立
applet 小 程 序 的 建 立 方 法 与 Java 程 序 类 似 , 通 过 javac.exe程序对源文件进行编辑,产生扩展名为.class的 字 节 码 文 件 。 applet 小 程 序 不 能 独 立 运 行 , 必 须 嵌 入 到 HTML文件中。在浏览器中加载HTML文件时,才开始执 行其中的applet程序。
}
}
2020/12/10
8
PPT教学课件
谢谢观看
Thank You For Watching
2020/12/10
9
第十三章
Applet
2020/12/10
1
一、Applet简介
Applet程序继承自java.applet.Applet类,嵌入 HTML文档中,通常置于服务器端,下载到本地 机后,通过浏览器在用户端执行。
Applet类提供了applet程序与所执行环境间的 标准接口,同时还提供了applet程序在浏览器上 执行的架构,包括init(),start(),stop()和 destroy()四个方法。
n = Integer.parseInt(nStr);
for (int i=1; i<=n; i++)
s = s*i;
}
public void paint(Graphics g){
g.drawRect(40,30, 150,55);
g.drawString(n + " != " + s, 60,50);
import java.awt.Graphics;
import javax.swing.*;
JavaApplet
Applet的安全限制
Applet的限制 SERVER applet被下载的
co n ne cti on
Browser
本地程序
applet
file
SERVER 与applet无关的
onn c
tion ec
local
本地方法
Applet
看看我们以前学过的一个简单例子:
import java.applet.*; import java.awt.*; public class HelloApplet extends Applet { public String s; public void init() { s = new String(“Hello World!”); } public void paint(Graphics g) { g.drawString(s,25,25); } }
Applet
回忆一下Applet的书写格式 import java.applet.*; public class MyApplet extends Applet{ … ; } 每一个Applet都继承自java.applet.Applet类,并且每个小 应用都有一个主程序类,之前必须加上public。
Applet的常用方法
除了四个Applet生命周期控制的方法外,Applet类还 提供了一些其他有用的方法: public AppletContext getAppletContext() public String getAppletInfo():应该被重写 public URL getDocumentBase() public URL getCodeBase() public String getParameter(String name) public String[][] getParameterInfo() :应该被重写 public void showStatus(String msg) public boolean isActive()
Java大学实用教程课后答案
Java大学实用教程课后答案第一章1.发明java的原因是什么,发明java的主要贡献者是谁?答:开发java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。
当时,c语言已无法满足人们的这一愿望,因为c语言总是针对特定的芯片将源程序编译成机器码,该机器码的运行就与特定的芯片指令有关,在其他类型的芯片上可能无法运行或者运行出错。
主要贡献者是James Gosling。
2.“java编译器将源文件编译生成的字节码是机器码”,这句话正确吗?答:不正确,字节码是很接近机器码的二进制文件,不能被机器直接识别。
3. java应用程序的主类必须含有怎么样的方法?4. "java应用程序必须有一个类是public类".这句话正确吗?答:一个java应用程序必须有一个类含有public static void main(String args[] )方法,称为该应用程序的主类。
5. "java applet程序的主类必须是public类",这句话正确吗?不正确"java applet源文件的主类必须是public类",这句话正确吗?正确6. 叙述java源文件的命名法则。
答:(1)如果源文件中有多个类,那么只能有一个类是public类。
(2)如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名为.java(3)如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名为.java就可以了。
(4)java 语言区分大小写。
7. 源文件生成的的字节码运行时加载到内存中吗?8. 怎样编写加载运行java applet的简单网页?9. JDK1.6编译器使用"-source"参数的作用是什么,其默认的参数取值是什么?答:在编译源文件时使用"-source"参数来约定字节码适合的java 平台。
JAVA 第13章
第13章 Applet类
3.stop()方法 当用户将浏览Applet程序所在的WEB页面切换到其它页面时, 浏览器会自动调用stop()方法,终止Applet程序。
4.destroy()方法 当用户关闭Applet程序窗口时,会自动执行此方法,结束程序, 释放所占资源。
13.2 Applet类中的方法
5.paint()方法
第13章 Applet类
该方法的主要作用是在Applet的界面中显示文字、图 形和其它界面元素。 浏览器调用paint()方法的事件主要有3种: (1)当浏览器首次显示Applet时,会自动调用paint() 方法。 (2)当用户调整窗口大小或移动窗口时,浏览器会调 用paint()方法。 (3)当repaint()方法被调用时,系统首先调用update() 方法将Applet对象所占用的屏幕空间清空,然后调用 paint()方法重画。
13.3 Applet的通讯
【例13-3】说明Applet如何与HTML文件进行通讯。
import java.awt.*; import java.applet.*; public class AppletAndHtml extends Applet { int x,y,r; public void init() { x=Integer.parseInt(getParameter("x")); y=Integer.parseInt(getParameter("y")); r=Integer.parseInt(getParameter("r")); } public void paint(Graphics g) { for(int i=1;i<=10;i++) g.drawOval(x+i*30,y,r,r); } }
JavaApplet基础
Java Applet的全过程(续) Applet的全过程(续)
运行
Java Applet必须由浏览器来运行 Applet必须由浏览器来运行 编写一个超文本文件(含有applet标 编写一个超文本文件(含有applet标 记的Web页)告诉浏览器来运行这 记的Web页)告诉浏览器来运行这 Web 个Java Applet
删除:destroy() 删除:destroy()
当浏览器结束浏览时,执行 destroy()方法,结束applet生命。 destroy()方法,结束applet生命。
描绘:paint(Graphics 描绘:paint(Graphics g)
可使applet在屏幕上显示某些信 可使applet在屏幕上显示某些信 息,如文字、色彩、背景或图象 等 可多次被调用
容器有相应的坐标系统,单位是像素,原点是容器的左上角 容器可使用add()方法放置组件 容器可使用add()方法放置组件
初始化:init() 初始化:init()
主类对象首先自动调用init()方法 主类对象首先自动调用init()方法 完成必要的初始化工作 主要任务:创建所需要的对象、 设置初始状态、装载图象、设置 参数等 格式:
Java Applet基础 Applet基础
Java Applet
必须有一个类是Applet类的子类 必须有一个类是Applet类的子类
是主类 必须修饰为public 必须修饰为public
Applet类 Applet类
是包java.applet中的一个类 是包java.applet中的一个类 是包java.awt中Container(容器) 是包java.awt中Container(容器)类 的子类
格式:
Java Applet入门
Java Applet 入门java applet 是用java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持java的浏览器(ie 或nescape)解释执行能够产生特殊效果的程序。
它可以大大提高web页面的交互能力和动态执行能力。
包含applet的网页被称为java-powered页,可以称其为java 支持的网页。
当用户访问这样的网页时,applet被下载到用户的计算机上执行,但前提是用户使用的是支持java的网络浏览器。
由于applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者modem存取速度的限制,用户可以更好地欣赏网页上applet产生的多媒体效果。
applet 小应用程序的实现主要依靠java.applet 包中的applet类。
与一般的应用程序不同,applet应用程序必须嵌入在html页面中,才能得到解释执行;同时applet可以从web 页面中获得参数,并和web页面进行交互。
含有applet的网页的html文件代码中必须带有和这样一对标记,当支持java的网络浏览器遇到这对标记时,就将下载相应的小程序代码并在本地计算机上执行该applet小程序。
applet是一种java的小程序,它通过使用该applet的html文件,由支持java的网页浏览器下载运行。
也可以通过java开发工具的appletviewer来运行。
applet 程序离不开使用它的html文件。
这个html文件中关于applet的信息至少应包含以下三点:1)字节码文件名(编译后的java文件,以.class为后缀)2)字节码文件的地址3)在网页上显示applet的方式。
一个html文件增加applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变html文件中与applet无关的元素。
(一) applet程序开发步骤applet程序开发主要步骤如下:1)选用edit或windows notepad等工具作为编辑器建立java applet源程序。
Java实用教程
第13章 Java络编程 第14章 JDBC编程
实验2 Java语法基 础
实验1在Eclipse集 成开发环境中调试
程序
实验3 Java面向对 象编程(上)
实验4 Java面 1
向对象编程 (下)
2
实验5常用类与 异常处理
3
实验6数组、枚 举及注解
4
实验7容器和泛 型
5
实验8 Java输 入/输出系统
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
目录分析
第1章 Java和 Eclipse集成开发环
境
第2章 Java语法基 础
第3章 Java面向对 象编程(上)
第4章 Java面向对 象编程(下)
第5章常用类与异常 处理
第6章数组、枚举及 注解
第7章容器和泛型
第8章 Java输入/输 出系统
1
第9章 AWT组 件及应用
2
第10章 Swing 组件及应用
实验目的 实验准备 实验内容 思考与练习题
实验目的 实验准备 实验内容 思考与练习题
第1章习题答案 第2章习题答案
第3章习题答案 第4章习题答案
第6章习题答案
第5章习题答案
第7章习题答案
01
第8章习题 答案
02
第9章习题 答案
03
第10章习 题答案
04
Java applet 使用指南说明书
Click on Control Panel and enter 'java' in the search box.
Double click on the Java icon to open the Java Control Panel.
8. Click on the OK button to close the Java Control Panel.
See the Java applet guide for further information and other troubleshooting ideas. Note: adding the Data Archive url (.au) is also required when using the Safari browser. See the Safari section of the How do I configure my browser for Java? FAQ. Note: the 'Security Redirect' message may be the next issue you encounter. Note: Java is not required when you use the Web application. For further information on using the Web application see the Web application guide. Help and further information:
To prevent this message appearing and to enable Java (dti) to function, add the Data Archive url to your Java exception list using the steps set out below: 1. Open the Java Control Panel.
Java Applet
一、Applet简介可以在浏览器中运行的小应用程序。
例题:import java.awt.*;import java.applet.Applet;public class MyApplet extends Applet{publicvoid paint(Graphics g){g.drawString("HelloWorld",100,100);}}编写HTML文件,并把MyApplet.class嵌入到HTML文件中。
<HTML><HEAD></HEAD><BODY><applet code=MyApplet.class codebase=jinheight=400 width=400></applet> </BODY></HTML>二、Applet方法介绍(1)init()方法(2)start()方法(3)paint()方法(4)stop()方法(5)destroy()方法(6)update()方法(7)repaint()方法例题6-1 一个验证Applet方法执行次数的测试程序import java.awt.*;importjava.applet.Applet;public class Count extends Applet{staticint initCount=0;staticint startCount=0;staticint paintCount=0;staticint stopCount=0;staticint destroyCount=0;publicvoid init(){initCount++;}publicvoid start(){startCount++;}publicvoid stop(){stopCount++;}publicvoid destroy(){destroyCount++;}publicvoid paint(Graphics g){paintCount++;g.drawString("init()="+initCount,50,30);g.drawString("start()="+startCount,100,30);g.drawString("paint()="+paintCount,150,30);g.drawString("stop()="+stopCount,250,30);}}三、Applet的AWT绘制(1)Java图形坐标file:///C:/Users/SBT/AppData/Local/Temp/msohtmlclip1/11/clip_image001.gif (2)各类图形的绘制方法例题:绘制一个微笑的人脸。
Java 第13章 Java Applet
有时我们想加载Java Applet程序所在的服务器上的图 像,那就必须要提供图像文件所在的URL的目录,例 如: 运行Java Applet的URL所指的目录是: http://192.168.0.1.200/java/。 如果Java Applet准备显示java目录中的图像,可以让 Java Applet调用从Applet继承的方法: public URL getCodeBase(), 该方法返回一个URL对象,该对象包含Java Applet 所 在 的 目 录 , 例 如 , 返 回 的 URL 对 象 含 有 的 信 息 : http://192.168.0.1.200/java。
返回
Applet还有一个类似的方法: public URL getDocumentBase(), 该方法返回一个URL对象,该对象是嵌入Java Applet的 网页的URL,例如,返回的URL对象含有的信息: http://192.168.0.1.200/java/like.html。 学会使用下面的最基本的drawImage()方法,您可以很 容易地使用另外的几个方法。 public boolean drawImage(Image img,int x,int y,ImageObserver observer):
第13章 Java Applet
13.1第一个 Applet 第一个 例13.1 applet应用程序的演示 应用程序的演示 本例演示小应用程序的编写与运行: 1. Applet小应用程序,文件名为HelloApplet.java:
import java.awt.*; import java.applet.Applet; //引入Applet类 public class HelloApplet extends Applet { String hw_text ; public void init () { //init()方法是Applet首先执行的方法 hw_text = “Hello World”; } public void paint(Graphics g) { g.drawString (hw_text , 25, 25) ; //在(25,25)处显示字符串 } }
Applet的下载与运行过程 的下载与运行过程
HTML文件
WWW服务器
下载HTML 文件 请求 HTML 文件
HTML文件 文件
<Html> ….. <Applet code = myapplet.clss …………> ……. <Html>
WWW服务器
请求
Applet 字节码 文件
下 载字 节码
<APPLET CODE=“showdate.class” width=600 height=80> CODEBASE=“\myjava\class” </APPLET>
C:\ C:\
myjava myjava javacode javacode class class
public
Index.html Index.html
第十三章Applet程序
Stop()方法:每当用户离开 Stop()方法:每当用户离开Applet所在网页,执行 所在网页, 方法 所在网页 执行stop()方 方 法使该网页变成不活动状态或使浏览器最小化。 法使该网页变成不活动状态或使浏览器最小化。 Destroy()方法:当用户真正离开浏览器时执行。该方法在 Destroy()方法:当用户真正离开浏览器时执行。该方法在stop()方法 方法 方法 之后执行,用于清除Applet所占用的资源。在实际应用中,该方法很 所占用的资源。 之后执行,用于清除 所占用的资源 在实际应用中, 少被重载。 少被重载。
当浏览器装载带有Applet程序的网页时,先为其全程 程序的网页时, 当浏览器装载带有 程序的网页时 变量分配内存空间,然后顺序调用运行Applet的init() 变量分配内存空间,然后顺序调用运行 的 方法, 方法和paint()方法。如果用户离开该网 方法。 方法, start()方法和 方法和 方法 使该页成为不活动或最小化浏览器窗口, 页,使该页成为不活动或最小化浏览器窗口,stop()方 方 法被调用。当用户离开Applet所在网页一段时间后, 所在网页一段时间后, 法被调用。当用户离开 所在网页一段时间后 又重新回到所在网页(重新激活该网页) 又重新回到所在网页(重新激活该网页)时,则再次执 方法和paint()方法。只有用户真正离开浏览 方法。 行start() 方法和 方法 器时才在执行stop()方法之后,执行 方法之后, 方法。 器时才在执行 方法之后 执行destroy()方法。 方法
Applet程序继承 Applet程序继承java.applet.Applet类,该类提供了 该类提供了Applet程序与所执行环 程序与所执行环 境间的标准接口,同时还提供了Appletchengxu在浏览器上执行的架构,包括 在浏览器上执行的架构, 境间的标准接口,同时还提供了 在浏览器上执行的架构 init()、start() 、stop()、 destroy()四个方法 、 、 四个方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
13.1 Java Applet的运行原理 _ 2 运行原理
2. 运行原理 例13-1说明Java Applet运行原理,效果如图13.1所示。
3
(1) 网页的编写
编写一个超文本文件,告诉浏览器来运行这个Java Applet。 假设 Applet 主类的名字是 Example13_1, 下面是一个简单的 html 文件“like.html”。
例13-7绘制了一些基本图形,效果如图13.5所示。
13
例13-7机制运行效果图13.5
14
13.6 在Java Applet中绘制图像
2.绘制直线
drawLine(int x1,int y1,int x2,int y2)方法绘制从起点(x1,y1)到终点(x2,y2) 的直线段。
3.绘制矩形
drawRect (int x,int y,int w,int h)方法绘制矩形,fillRect (int x,int y,int w,int h)方法填充矩形。矩形的左上角的坐标由参数x和y指定,矩形的宽和高 由参数w和h指定。
7.绘制多边形
drawPolygon(int xPoints[], int yPoints[], int nPoints)方法绘制多边形。 fillPolygon(int xPoints[], int yPoints[], int nPoints)方法填充多边形。 参数数组xPoint和yPoint组成多边形的顶点坐标,nPoints是顶点的数目。 注:Java自动闭合多边形,程序总是把最后的顶点和第一个顶点连接起来。
例13-5,13-6 运行效果 图13.2,13.3
10
13.5 在Java Applet中绘制图形 _1
1.绘制文本
drawstring() 方法可以在屏幕上显示串对象。 drawString(String s,int x,int y)方法从参数x、y指定的坐标位置处,从左向 右绘制参数s指定的字符串。 drawChars(char data[],int offset, int length, int x, int y)方法绘制data 数组中的部分字符,length指定数组中要连续绘制的字符的个数 ,offset是首字符 在数组中的位置。
根据参数url提供的地址和该处的声音文件name,可以获得一个用 于播放的音频对象(AudioClip类型对象)。这个音频对象可以使 用下列方法来处理声音文件: ◆ play() 播放声音文件name。 ◆ loop() 循环播放name。 ◆ stop() 停止播放name。 例13-3 播ple13_1.class height=180 width=300> </applet>
like.html文件告诉浏览器运行主类是Example13_1的Java Applet。 网页的最终目的是让其他客户通过网络来访问 ,下载到客户端 执 行 。 可 以 用 Web 发 布 管 理 器 , 比 如 ,IIS 或 Tomcat, 将 含 有 Java Applet网页所在的目录设成Web服务目录。例如,我们将like.html 所在的文件夹D:\ch13设为Web服务目录,虚拟目录名称是hello,那 么其他用户就可以在其浏览器的地址栏中键入该服务器的 IP地址、 虚 拟 目 录 名 称 访 问 含 有 Java Applet 的 网 页 , 如 http://192.168.0.100/hello/like.html。 Java Applet 的字节码文件会下载到客户端 , 由客户端的浏览 器负责运行。超文本文件 like.html 可以被看成是运行环境执行 Java Applet所要求的配置文件。 4
11
图13.4
12
13.5 在Java Applet中绘制图形_2
6.绘制圆弧 圆弧就是某个椭圆的一部分。
drawArc(int x,int y,int width,int height,int starAngle, int arcAngle)方 法绘制圆弧。 fillArc(int x,int y,int width,int height,int starAngle,int arcAngle)方法 填充圆弧。 x 、y、width、heigth 指定椭圆的位置和大小 , 参数starAngle 和 arcAngle 的 单位都是“度”。而起始角度的0°是3点钟的方位。参数starAngle和arcAngle 表示从starAngle的角度开始逆时针或顺时针方向画arcAngle度的弧,当arcAngle 是正值时为逆时针 ,否则为顺时针。starAngle的值可以是负值 ,如-90°是6点钟 的方位。
13.1 Java Applet的运行原理 _ 3关于repaint()方法
和update(Graphics g) 3关于repaint()方法update(Graphics g) repaint()方法和update(Graphics g)是Component类中的一个 方法。当调用 repaint() 方法时,程序首先清除 paint() 方法以前所 画的内容,然后再调用paint()方法。 实 际 上 , 当 我 们 调 用 repaint() 方 法 时 , 程 序 自 动 去 调 用 update(Graphics g)方法,浏览器的Java运行环境产生一个Graphics 类的实例,传递给方法update(Graphics g)中的参数g。这个方法的 功能是清除paint()方法以前所画的内容,然后再调用paint()方法。 因此,我们可以在子类中重写update()方法(即隐藏父类的方法),根据需 要来清除哪些部分或保留哪些部分。 例 13-2 在 paint() 方法中使用了 repaint() 方法,因此每当 Java Applet 调用 paint() 方法时,就会调用 update() 方法。程序重写了 update()方法,清除paint()方法所绘制的部分内容,并紧接着再调 用paint()方法。
Applet类是容器的间接子类,因此我们可以在这个容器中添加 组件,处理组件事件,完成一些工作。如果没有更新浏览器内置的 JVM,Java Applet中只能使用JDK 1.1版本公布的java.awt包中的组 件,如Button,TextField,TextArea等。 例13-5中,我们把Java Applet的布局设置为BorderLayout布局, 效果如图13.2所示。Java Applet的中心和北面又分别嵌套了面板 (Panel创建的对象)centerPanel和northPanel。centerPanel面板 的布局是CardLayout布局、northPanel的布局是默认的FlowLayout 布局。在northPanel中添加了两个按钮,centerPanel面板中又嵌 套了两个不同的容器,作为centerPanel 中的“卡片”,单击相应的 按钮时,centerPanel面板将显示相应的“卡片”,两张卡片分别负责 计算圆和三角形的面积。 例13-6(效果如图13.3所示)在JApplet的内容面板的中心添 加了JTree组件,该组件用来显示日历。网页将年份传值给Japplet, 在内容面板的北面添加了两个按钮,两个按钮分别负责向前和向后 翻动月份;在内容面板的南面添加了1个标签,用来显示月份和年 份。该例子中用到了Calendar类的许多属性和功能。 9
4.绘制圆角矩形
drawRoundRect(int x,int y,int w,int h,int arcW,int arcH)方法绘制圆角 矩形,fillRoundRect(int x,int y,int w,int h,int arcW,int arcH)方法填充 圆角矩形。参数arcW和arcH指定圆角的尺寸,见图13.4中的4个黑角部分。
6
13.2 Java Applet中播放声音
用Java可以编写播放AU、AIFF、WAV、MIDI、RM格式的音 频。AU格式是Java早期惟一支持的音频格式。要在Java Applet中 播放声音,可以使用Applet类的一个静态的方法(类方法):
newAudioClip(URL url,String name) 或Applet类的实例方法getAudioClip(Url url,String name)
(2) Java Applet的生命周期
一个Java Applet的执行过程称为这个 Java Applet的生命周期。一个Java Applet 的 生 命 周 期 会 涉 及 如 下 方 法 的 调 用 执 行 init() , start() , stop() , destroy()和paint(Graphics g)。 当浏览器执行like.html,发现有applet标记时,浏览器内置的JVM将创建主 类 Example13_1 的 一 个 对 象 , 它 的 大 小 由 超 文 本 文 件 like.html 中 的 width 和 height来确定。由于Applet类也是Container的间接子类,因此主类的实例也是 一个容器,容器有相应的坐标系统,单位是像素,原点是容器的左上角。该容器 的默认布局是FlowLayout布局,被自动添加到浏览器的桌面上。 ◆浏览器内置的JVM创建了主类Boy对象后,立刻通知这个对象调用init()方法完 成必要的初始化工作。 ◆该对象接着自动调用start()方法。 ◆当浏览器离开Java Applet所在的页面转到其他页面时,主类创建的对象将调 用stop()方法。 ◆当浏览器结束浏览时,主类创建的对象自动执行 destroy() 方法,结束 Java Applet 的生命。 ◆ paint(Graphics g)方法可以使一个Java Applet在容器上显示某些信息,如 文字、色彩、背景或图像等。浏览器的Java运行环境产生一个Graphics类的实例, 并传递给方法paint中的参数g。 5