我正在尝试在运行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中显示。
我错过了什么/做错了什么?
提前感谢您的回复!
答案 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)
可能只是因为您在粘贴时剪切了代码,但是您是否对视图进行了无效处理以使其重新绘制?