Java 애플릿 기본
애플릿은 Java 프로그램입니다. 일반적으로 Java 지원 웹 브라우저 내에서 실행됩니다. 완전한 Java API 지원을 제공하므로 애플릿은 모든 기능을 갖춘 Java 애플리케이션입니다.
다음은 독립형 Java 애플리케이션과 애플릿 프로그램 간의 중요한 차이점입니다.
*Java의 Applet 클래스는 java.applet 클래스를 상속합니다.
*Applet 클래스는 main()을 정의하지 않으므로 Applet 프로그램은 main() 메서드를 호출하지 않습니다.
*애플릿은 HTML 페이지에 삽입되도록 설계되었습니다.
*사용자가 애플릿이 포함된 HTML 페이지를 탐색하면 애플릿 코드가 사용자 컴퓨터에 다운로드됩니다.
*애플릿을 보시려면 JVM이 필요합니다. JVM은 웹 브라우저용 플러그인이거나 독립 실행형 런타임 환경일 수 있습니다.
*사용자 컴퓨터의 JVM은 Applet 클래스의 인스턴스를 생성하고 Applet 라이프 사이클 프로세스에서 다양한 메서드를 호출합니다.
*애플릿에는 웹 브라우저에서 시행하는 엄격한 보안 규칙이 있습니다. 애플릿의 보안 메커니즘을 샌드박스 보안이라고 합니다.
*애플릿에 필요한 기타 클래스는 JAR(Java Archive) 파일 형식으로 다운로드할 수 있습니다.
Applet의 라이프 사이클Applet 클래스의 네 가지 메소드는 작은 프로그램을 개발할 수 있는프레임워크를 제공합니다.
*init: 이 메소드의 목적은 애플릿에 필요한 초기화를 제공하는 것입니다. 이 메소드는 Applet 태그 내의 param 태그가 처리된 후에 호출됩니다.
*start: 이 메소드는 브라우저가 init 메소드를 호출한 후 자동으로 호출됩니다. 이 메소드는 사용자가 다른 페이지에서 애플릿이 포함된 페이지로 돌아올 때마다 호출됩니다.
*stop: 이 메소드는 사용자가 애플릿이 포함된 페이지에서 제거할 때 자동으로 호출됩니다. 따라서 동일한 애플릿 내에서 메소드를 반복적으로 호출할 수 있습니다.
*destroy: 브라우저가 정상적으로 종료된 경우에만 호출되는 메소드입니다. 애플릿은 HTML 페이지에서만 유효하므로 사용자가 애플릿이 포함된 페이지를 떠난 후에도 리소스를 놓치지 않아야 합니다.
*paint: 이 메소드는 start() 메소드 직후 또는 브라우저에서 애플릿을 다시 그려야 할 때 호출됩니다. Paint() 메소드는 실제로 java.awt에서 상속됩니다.
"Hello, World" 애플릿:다음은 간단한 애플릿 프로그램 HelloWorldApplet.java입니다:HelloWorldApplet.java 파일 코드:import java.applet.*;import java.awt.*; public class HelloWorldApplet extends Applet{ public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); }}이 import 문은 다음 클래스를 Applet 클래스로 가져옵니다.
java.applet.Applet. java.awt.Graphics.이 import 문이 없으면 Java 컴파일러는 Applet 및 Graphics 클래스를 인식하지 못합니다. 애플릿 클래스각 애플릿은 java.applet.Applet 클래스의 하위 클래스입니다. 기본 Applet 클래스는 브라우저 컨텍스트를 얻기 위해 호출할 파생 클래스에 대한 메서드를 제공합니다. 이 메소드는 다음을 수행합니다.
*애플릿의 매개변수 가져오기
*다음을 포함하는 HTML 파일의 네트워크 위치 가져오기 the Applet
*애플릿 클래스 디렉터리의 네트워크 위치를 가져옵니다
*브라우저의 상태정보 *获取一张图片 *获取一个音频片段 *播放一个音频片段 *调整此 Applet 的大小 除此之外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,并且来控制 Applet 的执行。 Viewer 可能是: *请求 Applet 作者、版本和版权的信息 *请求 Applet 识别的参数的描述 *初始化 Applet *销毁 Applet *开始执行 Applet *结束执行 Applet Applet 类提供了对这些方法的默认实现,这些方法可以在需要的时候重写。 "Hello,World"applet 都是按标准编写的。唯一被重写的方法是 paint 方法。 Applet 的调用 Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序。 082dedeb30a00d0e6e2cdb74a392fac3 标签是在HTML文件中嵌入 Applet 的基础。以下是一个调用"Hello World"applet的例子; HTML 代码: 注意: 你可以参照 HTML Applet 标签来更多的了解从 HTML 中调用 applet 的方法。 082dedeb30a00d0e6e2cdb74a392fac3 标签的属性指定了要运行的 Applet 类。width 和 height 用来指定 Applet 运行面板的初始大小。Applet 必须使用 0f47783e45a827c89a02ecd1506bec99 标签来关闭。 如果 Applet 接受参数,那么参数的值需要在 0c68fef83818661b6da588c77ca3985e 标签里添加,该标签位于 082dedeb30a00d0e6e2cdb74a392fac3 和 0f47783e45a827c89a02ecd1506bec99 之间。浏览器忽略了 applet 标签之间的文本和其他标签。 不支持 Java 的浏览器不能执行 082dedeb30a00d0e6e2cdb74a392fac3 和 0f47783e45a827c89a02ecd1506bec99。因此,在标签之间显示并且和 applet 没有关系的任何东西,在不支持的 Java 的浏览器里是可见的。 Viewer 或者浏览器在文档的位置寻找编译过的 Java 代码,要指定文档的路径,得使用 082dedeb30a00d0e6e2cdb74a392fac3 标签的 codebase 属性指定。 如下所示: 如果 Applet 所在一个包中而不是默认包,那么所在的包必须在 code 属性里指定,例如: 获得applet参数 下面的例子演示了如何使用一个 Applet 响应来设置文件中指定的参数。该 Applet 显示了一个黑色棋盘图案和第二种颜色。 第二种颜色和每一列的大小通过文档中的 Applet 的参数指定。 CheckerApplet 在 init() 方法里得到它的参数。也可以在 paint() 方法里得到它的参数。然而,在 Applet 开始得到值并保存了设置,而不是每一次刷新的时候都得到值,这样是很方便,并且高效的。 Applet viewer 或者浏览器在 Applet 每次运行的时候调用 init() 方法。在加载 Applet 之后,Viewer 立即调用 init() 方法(Applet.init()什么也没做),重写该方法的默认实现,添加一些自定义的初始化代码。 Applet.getParameter() 方法通过给出参数名称得到参数值。如果得到的值是数字或者其他非字符数据,那么必须解析为字符串类型。 下例是 CheckerApplet.java 的修改: CheckerApplet.java 文件代码: 下面是 CheckerApplet 类的 init() 方法和私有的 parseSquareSize() 方法: 该 Applet 调用 parseSquareSize(),来解析 squareSize 参数。parseSquareSize() 调用了库方法 Integer. parseInt() 该方法将一个字符串解析为一个整数,当参数无效的时候,Integer.parseInt() 抛出异常。 因此,parseSquareSize() 方法也是捕获异常的,并不允许 Applet 接受无效的输入。 Applet 调用 parseColor()方法将颜色参数解析为一个 Color 值。parseColor() 方法做了一系列字符串的比较,来匹配参数的值和预定义颜色的名字。你需要实现这些方法来使 Applet 工作。 指定 applet 参数 如下的例子是一个HTML文件,其中嵌入了 CheckerApplet 类。HTML文件通过使用 0c68fef83818661b6da588c77ca3985e 标签的方法给 applet 指定了两个参数。 注意: 参数名字大小写不敏感。 应用程序转换成 Applet 将图形化的 Java 应用程序(是指,使用AWT的应用程序和使用 java 程序启动器启动的程序)转换成嵌入在web页面里的applet是很简单的。 下面是将应用程序转换成 Applet 的几个步骤: *编写一个 HTML 页面,该页面带有能加载 applet 代码的标签。 *编写一个 JApplet 类的子类,将该类设置为 public。否则,Applet 不能被加载。 *消除应用程序的 main()方法。不要为应用程序构造框架窗口,因为你的应用程序要显示在浏览器中。 *将应用程序中框架窗口的构造方法里的初始化代码移到 Applet 的 init() 方法中,你不必显示的构造 Applet 对象,浏览器将通过调用 init() 方法来实例化一个对象。 *移除对 setSize() 方法的调用,对于 Applet 来讲,大小已经通过 HTML 文件里的 width 和 height 参数设定好了。 *移除对 setDefaultCloseOperation() 方法的调用。Applet 不能被关闭,它随着浏览器的退出而终止。 *如果应用程序调用了 setTitle() 方法,消除对该方法的调用。applet 不能有标题栏。(当然你可以给通过 html 的 title 标签给网页自身命名) *不要调用 setVisible(true),Applet 是自动显示的。 事件处理 Applet 类从 Container 类继承了许多事件处理方法。Container 类定义了几个方法,例如:processKeyEvent() 和processMouseEvent(),用来处理特别类型的事件,还有一个捕获所有事件的方法叫做 processEvent。 为了响应一个事件,Applet 必须重写合适的事件处理方法。 ExampleEventHandling.java 文件代码: 如下调用该 Applet: 最开始运行,Applet 显示 "initializing the applet. Starting the applet.",然后你一点击矩形框,就会显示 "mouse clicked" 。 显示图片 Applet 能显示 GIF,JPEG,BMP 等其他格式的图片。为了在 Applet 中显示图片,你需要使用 java.awt.Graphics 类的drawImage()方法。 如下实例演示了显示图片的所有步骤: ImageDemo.java 文件代码: 如下调用该applet: 播放音频 Applet 能通过使用 java.applet 包中的 AudioClip 接口播放音频。AudioClip 接口定义了三个方法: *public void play(): 从一开始播放音频片段一次。 *public void loop(): 循环播放音频片段 *public void stop(): 停止播放音频片段 为了得到 AudioClip 对象,你必须调用 Applet 类的 getAudioClip() 方法。无论 URL 指向的是否是一个真实的音频文件,该方法都会立即返回结果。 直到要播放音频文件时,该文件才会下载下来。 如下实例演示了播放音频的所有步骤: AudioDemo.java 文件代码: 如下调用applet: 你可以使用你电脑上的 test.wav 来测试上面的实例。 【相关推荐】 1. 特别推荐:“php程序员工具箱”V0.1版本下载 2. Java免费视频教程<html>
<title>The Hello, World Applet</title>
<hr>
<applet code="HelloWorldApplet.class" width="320" height="120">
If your browser was Java-enabled, a "Hello, World" message would appear here.
</applet>
<hr>
/html>
<applet codebase="http://amrood.com/applets"
code="HelloWorldApplet.class" width="320" height="120">
<applet code="mypackage.subpackage.TestApplet.class"
width="320" height="120">
import java.applet.*;import java.awt.*;public class CheckerApplet extends Applet{
int squareSize = 50;// 初始化默认大小
public void init () {}
private void parseSquareSize (String param) {}
private Color parseColor (String param) {}
public void paint (Graphics g) {}}
public void init (){
String squareSizeParam = getParameter ("squareSize"); parseSquareSize (squareSizeParam); String colorParam = getParameter ("color"); Color fg = parseColor (colorParam); setBackground (Color.black); setForeground (fg);}private void parseSquareSize (String param){
if (param == null) return; try {
squareSize = Integer.parseInt (param); }
catch (Exception e) {
// 保留默认值
}}
<html>
<title>Checkerboard Applet</title>
<hr>
<applet code="CheckerApplet.class" width="480" height="320">
<param name="color" value="blue">
<param name="squaresize" value="30">
</applet>
<hr>
</html>
import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.applet.Applet;import java.awt.Graphics;
public class ExampleEventHandling extends Applet
implements MouseListener {
StringBuffer strBuffer;
public void init() {
addMouseListener(this); strBuffer = new StringBuffer(); addItem("initializing the apple "); }
public void start() {
addItem("starting the applet "); }
public void stop() {
addItem("stopping the applet "); }
public void destroy() {
addItem("unloading the applet"); }
void addItem(String word) {
System.out.println(word); strBuffer.append(word); repaint(); }
public void paint(Graphics g) {
//Draw a Rectangle around the applet's display area.
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
//display the string inside the rectangle.
g.drawString(strBuffer.toString(), 10, 20); }
public void mouseEntered(MouseEvent event) {
}
public void mouseExited(MouseEvent event) {
}
public void mousePressed(MouseEvent event) {
}
public void mouseReleased(MouseEvent event) {
}
public void mouseClicked(MouseEvent event) {
addItem("mouse clicked! "); }}
<html>
<title>Event Handling</title>
<hr>
<applet code="ExampleEventHandling.class"width="300" height="300">
</applet>
<hr>
</html>
import java.applet.*;import java.awt.*;import java.net.*;public class ImageDemo extends Applet{
private Image image; private AppletContext context; public void init()
{
context = this.getAppletContext(); String imageURL = this.getParameter("image"); if(imageURL == null)
{
imageURL = "java.jpg"; }
try
{
URL url = new URL(this.getDocumentBase(), imageURL); image = context.getImage(url); }catch(MalformedURLException e)
{
e.printStackTrace(); // Display in browser status bar
context.showStatus("Could not load image!"); }
}
public void paint(Graphics g)
{
context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="300" height="200">
<param name="image" value="java.jpg">
</applet>
<hr>
</html>
import java.applet.*;import java.awt.*;import java.net.*;public class AudioDemo extends Applet{
private AudioClip clip; private AppletContext context; public void init()
{
context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null)
{
audioURL = "default.au"; }
try
{
URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); }catch(MalformedURLException e)
{
e.printStackTrace(); context.showStatus("Could not load audio file!"); }
}
public void start()
{
if(clip != null)
{
clip.loop(); }
}
public void stop()
{
if(clip != null)
{
clip.stop(); }
}}
<html>
<title>The ImageDemo applet</title>
<hr>
<applet code="ImageDemo.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
<hr>
위 내용은 자바 애플릿에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!