animation.java
来自「java的书上例子」· Java 代码 · 共 107 行
JAVA
107 行
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
/** 一个显示动画的JApplet小应用程序
* @作者:尉哲明
* @日期:2001年5月 */
/** 定义JApplet类 */
public class Animation extends JApplet
{
private Thread runner;
private ImagePanel p;
private Image image;
private int imageWidth;
private int imageHeight;
private String imageName;
/** init()方法,用来下载动画文件并指定显示动画的内容面板 */
public void init()
{
try
{
imageName=getParameter("imagename");//从HTML文件中获取动画文件名
if (imageName==null) imageName="";
}
catch(Exception e)
{
showStatus("Error: "+e);
}
image=null;
loadImage();//下载动画文件
p=new ImagePanel();
setContentPane(p);
}//init()方法结束
/** 该方法用来下载动画文件 */
public void loadImage()
{
try
{
URL url=new URL(getDocumentBase(),imageName);
image=getImage(url);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(image,0);
tracker.waitForID(0);
imageWidth=image.getWidth(null);
imageHeight=image.getHeight(null);
resize(imageWidth,imageHeight);
}
catch(InterruptedException e)
{
showStatus("Loading interrupted");
}
catch(MalformedURLException e)
{
showStatus("Bad URL");
}
}//loadImage()方法结束
/** JApplet的start()方法 */
public void start()
{//当用户返回该网页时,启动动画线程
runner=new Thread(p);
runner.start();
}
/** JApplet的stop()方法 */
public void stop()
{//当用户离开该网页时,终止动画线程
runner.interrupt();
runner=null;
}
/** 动画显示面板类,该类为内部类 */
public class ImagePanel extends JPanel implements Runnable
{
/** 面板组件的paintComponent()方法 */
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(image==null) return;
g.drawImage(image,0,0,null); //显示动画
}
/** 在线程中显示动画 */
public void run()
{
long startTime=System.currentTimeMillis();
while (!Thread.interrupted())
{
repaint();//在屏幕上画一帧
try
{
startTime+=200;
Thread.sleep(Math.max(0,startTime-System.currentTimeMillis()));//睡眠200毫秒
}
catch(InterruptedException e)
{}
}
}//run()方法结束
}//ImagePanel内部类结束
}//Animation类结束
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?