我创建了一个applet jar。该jar包含以下文件夹中的图像
com\common\images\red.bmp
现在,我想在Swing Applet上显示这个图像。
private static final ImageIcon redIndicator = new ImageIcon("com\\common\\images\\red.bmp");
之后,我已将 redIndicator 附加到JPanel
,但我无法看到此图片。
有什么建议吗?
================================== EDITED ============ =============================
private static final ImageIcon marker = loadImage("com/common/images/scale.jpg");
@SuppressWarnings("unused")
private static ImageIcon loadImage(String imagePath) {
BufferedInputStream imgStream = new BufferedInputStream(TpcHandler.class.getResourceAsStream(imagePath));
int count = 0;
if (imgStream != null) {
byte buf[] = new byte[2400];
try {
count = imgStream.read(buf);
} catch (java.io.IOException ioe) {
return null;
} finally {
if (imgStream != null)
try {
imgStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (count <= 0) {
LOGGER.warning("Empty image file: " + imagePath);
return null;
}
return new ImageIcon(Toolkit.getDefaultToolkit().createImage(buf));
} else {
LOGGER.warning("Couldn't find image file: " + imagePath);
return null;
}
}
我收到以下异常
java.io.IOException: Stream closed
在第count = imgStream.read(buf);
行
答案 0 :(得分:2)
这应该可以解决问题(如果从同一个jar加载的类中调用):
new ImageIcon(getClass().getResource("/com/common/images/red.bmp"))
答案 1 :(得分:1)
使用YourPanel.class.getResourceAsStream("/com/common/images/red.bmp")
,将流读取到byte[]
并根据该ImageIcon
构建{{1}}。 (并且不要使用bmps - 更喜欢png或jpeg)
答案 2 :(得分:0)
小应用程序和图像是一个常见问题所以,对于Java applet和图像,我建议你阅读one of my previous answers希望它有所帮助:)
祝你好运