在Applet中加载PNG图像的问题

时间:2010-04-08 14:50:45

标签: java image applet png

我正在尝试在运行JApplet时从JAR文件加载PNG图像。 我认为该文件正确加载 - 没有错误。 但是它没有显示。 img.png与MainClass.java文件放在同一目录中。 这是代码:

InputStream imageURL = this.getClass().getResourceAsStream("img.png" );
byte[] bytes = null;
try {
    bytes = new byte[imageURL.available()];
    System.out.println(imageURL.available());
    imageURL.read(bytes);
}
catch(Exception e) {System.out.println("bleah");}

Image image = Toolkit.getDefaultToolkit().createImage(bytes);
Image imageScaled = image.getScaledInstance( 100, 150, Image.SCALE_SMOOTH );
jLabel6 = new javax.swing.JLabel( new ImageIcon( imageScaled) );`

和HTML exerpt:

<APPLET codebase="classes" code="myapplet/MainClass.class" archive ="LittleApplet.jar" width=700 height=500></APPLET>

正如我所写,图像可能已被阅读,但未在JLabel中显示。

我错过了什么/做错了什么?

提前感谢您的回复!

3 个答案:

答案 0 :(得分:0)

这对我有用:

URL imageURL = this.getClass().getResource("img.png");
Image image = Toolkit.getDefaultToolkit().createImage(imageURL);
Image scaled = image.getScaledInstance(100, 150, Image.SCALE_SMOOTH);
JLabel label = new JLabel(new ImageIcon(scaled));

答案 1 :(得分:0)

删除或注释掉

System.out.println(imageURL.available());

一旦你从流中读取它,它将变为空,它不是一个简单的副本,从流中读取正在消耗流。

完成操作后,冲洗/关闭流也是一种很好的做法。

答案 2 :(得分:0)

可能只是因为您在粘贴时剪切了代码,但是您是否对视图进行了无效处理以使其重新绘制?