最近为了打发空余的时间,开始用Applet写小游戏。今天碰到了一个让我很迷惑的问题:写好的程序在eclipse这样的IDE工具里运行一切正常。但当在页面上运行时,会在要出现图片时不动,图片显示不出来。
我读去图片的方法如下:
ImageIcon image = new ImageIcon(applet.getCodeBase(), "img/biggerbat.JPG");
后来,在网上搜索资料才发现Applet在网页上有些许限制,而其中最大的限制就是:
Applet不能访问本地硬盘。
于是通过在网上搜索,终于找到了解决之道:
URL myResource = this.getClass().getResource("img/biggerbat.JPG");
ImageIcon image = new ImageIcon(myResource);
Applet虽然不能直接读本地文件,但它可以通过URL来访问资源。
下面是我转自网络上的资料:
To quickly convert a Java application to a Java applet, follow these simple steps below:
- Change:
public class HelloWorld {
to:
public class HelloWorld extends JApplet{
- Change:
public static void main(String[] args) {
to:
public void init() {
- Remove:
JFrame frame;
and change all references to the frame in the class to:
this
and all references in subclasses to:
null
- Move all your images into a subfolder called "images".
- Add this global variable:
private final static String imagePath = "images//"
- Create a method to load ImageIcons as resources:
private ImageIcon LoadImageIcon(String imgName){ URL myResource = this.getClass().getResource(imgName); return new ImageIcon(myResource); }
and change all instances of:
new ImageIcon("example.jpg")
to:
LoadImageIcon(imagePath + "example.jpg")
- Build a jar archive of your compiled class files.
- Create a HTML file like this one:
<html> <body> <applet code="HelloWorld.class" archive="HelloWorld.jar" height="100" width="100"> </body> </html>
And then, you are all set!
把Applet的Source打成一个jar包的原因是:
Applet的启动时间很长
因为每次都得下载所有东西,而且每下载一个类都要向服务器发一个请求。或许浏览器会作缓存,但这并不是一定的。所以一定要把applet的全部组件打成一个JAR的(Java ARchive)卷宗(除了.class文件之外,还包括图像,声音),这样只要发一个请求就可以下载整个applet了。
游戏还在继续开发中。。。
自己也在不断学习中。。。