有ClassLoader, demo在引用资源的时候采用方法 getClass().getResource(String sourceName)
如下:
public URL getResource(String name)
Finds a resource with a given name. This method returns null if no resource with this name is found. The rules for searching resources associated with a given class are implemented by the * defining class loader of the class.
This method delegates the call to its class loader, after making these changes to the resource name: if the resource name starts with "/", it is unchanged; otherwise, the package name is prepended to the resource name after converting "." to "/". If this object was loaded by the bootstrap loader, the call is delegated to ClassLoader.getSystemResource.
Parameters:
name - name of the desired resource
Returns:
a java.net.URL object.
*/
/**Initialize the applet*/
public void init(){
try {
if (myButtonIcon == null)
throw new Exception("cannot get the image!");
JButton iButton = new JButton(myButtonIcon);
Container cp = this.getContentPane();
cp.add(iButton);
}
catch (Exception e){
e.printStackTrace();
}
}
}
子编译之后,把ImageButtonApplet.class和my.gif保持相对路径打进jar里面,对应的HTML页面代码为<APPLET CODE = "ImageButtonApplet.class" CODEBASE = "." ARCHIVE = "my.jar" WIDTH = "200" HEIGHT = "200"></APPLET>。成功关键在于使用getClass().getResource(path).