这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战
今天继续~
Applet的调用
- Applet是一种java程序。它一般运行在支持java的Web浏览器内。因为它有完整的javaAPI支持,所以Applet是一个全功能的java应用程序
<html>
<applet code="AppletTest.class" width="800" height="600">balabalabala</applet>
</html>
- applet标签的属性指定了要运行的applet类,width和height指定applet应用的初始大小
- 如果applet要接收参数,那么参数的值需要在标签里添加
- 浏览器忽略applet标签之间的文本和其他标签
- 不支持java的浏览器不能执行applet标签。所以在不支持java的浏览器里,applet标签中间的东西是可见的
- 如果要指定文档路径,可以使用
codebase
属性指定
指定applet参数
- 通过param来指定参数:
<html>
<applet code="AppletTest.class" width="800" height="600">
<param name="game" value="CSGO">
<param name="network" value="ACG.com">
</applet>
</html>
获取applet参数
- 可以通过
getParameter
来获取参数并进行修改 - 获取参数的依据是属性
name
import java.applet.*;
import java.awt.*;
public class AppletTest extends Applet{
public void init(){
String gameParam = getParameter("game");
String networkParam = getParameter("network");
}
}
应用程序转换为applet
- 编写一个HTML页面,且该页面带有能加载applet代码的标签
- 编写一个JApplet类的子类,设置为public
- 消除应用程序中的
main()
,不要为应用程序构造窗口 - 将应用程序中框架窗口的构造方法里的初始化代码移到Applet的
init()
中,浏览器将通过调用init()
来实例化一个对象 - 移除对
setSize()
的调用,因为在applet标签中就已经设置好大小了 - 移除对
setDefaultCloseOperation()
的调用,因为它不能自行关闭,要随着浏览器的关闭而关闭 - 如果有的话,移除对
setTitle()
的调用,applet不能有标题(但是可以在html上加) - 移除对
setVisible(true)
的调用,applet是自动显示的
事件处理
- Applet类从Container类继承了许多事件处理方法。Container类定义了几个方法,例如
processKeyEvent()
,用来处理特别类型的事件,捕获所有事件的方法为processEvent
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;
public class EventTest extends Applet implements MouseListener{
StringBuffer strBuffer;
void addItem(String word) {
System.out.println(word);
strBuffer.append(word);
repaint(); // 重绘
}
public void init(){
addMouseListener(this);
strBuffer = new StringBuffer();
addItem("initialization");
}
public void paint(Graphics g){
g.drawRect(0,0,getWidth()-1,getHeight()-1);// x,y,宽度,高度
g.drawString(strBuffer.toString(),50.10);
}
public void mouseClicked(MouseEvent event){
addItem("mouse clicked!");
}
}
显示图片
Applet能显示图片,可使用java.awt.Graphics
类的drawImage()
方法
- html:
<html>
<applet code="ImageTest.class" width="800" height="600">
<param name="image" value="java.jpg">
</applet>
</html>
- applet:
import java.appet.*;
import java.awt.*;
import java.net.*;
public class ImageTest extends Applet{
private Image image;
private AppletContext context;
public void init(){
context = this.getAppletContext();
String imageURL = this.getParameter("image");
URL url = new URL(this.getDocumentBase(),imageURL);
image = context.getImage(url);
}
public void paint(Graphics g){
g.drawImage(image,0,0,800,600,null);// 图片,x,y,宽,高,转换了更多图像时要通知的对象
}
}
播放音频
- 可以通过
java.applet
中的AudioClip
接口播放音频。AudioClip
接口定义了三个方法:public void play()
- 刚开始就播放音频一次public void loop()
- 循环播放音频public void stop()
- 停止播放音频
- 需要调用
getAudioClip()
来得到AudioClip对象 - 当播放音频文件时,文件才会被下载
- html:
<html>
<applet code="ImageTest.class" width="0" height="0">
<param name="audio" value="test.wav">
</applet>
</html>
- applet:
import java.applet.*;
import java.awt.*;
import java.net.*;
public class AudioTest extends Applet{
private AudioClip clip;
private AppletContext context;
public void init(){
context = this.getAppletContext();
String audioURL = this.getParameter("audio");
URL url = new URL(this.getDocumentBase(),audioURL);
clip = context.getAudioClip(url);
}
public void start(){
clip.loop();
}
public void stop(){
clip.stop();
}
}
今天就学到这里吧,晚安~