从零开始学java - 第二十四天

143 阅读3分钟

这是我参与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();
    }
}

今天就学到这里吧,晚安~