0

我有一个带有一些按钮的小程序,这些按钮有图像图标。我还用这个小程序制作了一个 HTML 文件。每当我从服务器(Apache tomcat)打开此页面时,都会发生异常:

java.lang.reflect.InvocationTargetException.

但是,如果我在没有图标的情况下运行,则没有问题。谁能帮助我,以便我可以加载带有按钮图标的小程序?

Image myImage = getToolkit().createImage("image/REC1.jpg");

ImageIcon myIcon = new ImageIcon(myImage);
button.setIcon(myIcon);
4

2 回答 2

1

Toolkit.createImage(String)

返回从指定文件获取像素数据的图像。返回的 Image 是一个新对象,不会与此方法的任何其他调用者或其 getImage 变体共享。

此方法首先检查是否安装了安全管理器。如果是这样,该方法checkRead使用指定的文件调用安全管理器的方法,以确保允许创建映像。

我把两部分加粗:

  • 文件- 只指向运行小程序的计算机的本地文件系统。所以不适合小程序中的图标 - 它们必须在服务器上。和..
  • 安全管理器- 不允许沙盒小程序读取或写入本地文件系统。这可能是缺少的堆栈跟踪的重要部分。

小程序资源访问

如果是沙盒,小程序需要通过URL 从“主服务器”加载资源。

图标可能是嵌入资源,在元素archive属性中引用的 Jar 中applet,但如果它们作为图像加载到服务器,则可以相对于文档库或代码库访问它们。这是在包含 HTML 的目录REC1.jpgimage子目录中命名的图像的外观。

URL url = new URL(getDocumentBase(), "image/REC1.jpg");
Image myImage = getToolkit().createImage(url);
于 2012-07-04T10:30:43.627 回答
0

您也可以使用 .PNG 文件格式。并使用小写字母作为文件名。

于 2012-07-04T08:48:00.160 回答