【问题标题】:Problem with loading a PNG image in JApplet在 JApplet 中加载 PNG 图像的问题
【发布时间】:2011-02-05 18:03:03
【问题描述】:

我正在尝试在运行 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 摘录:

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

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

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

提前感谢您的回复!

【问题讨论】:

    标签: java image applet png


    【解决方案1】:

    这对我有用:

    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));
    

    【讨论】:

      【解决方案2】:

      删除或注释掉该行

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

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

      完成后刷新/关闭流也是一种很好的做法。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2015-02-19
          • 2015-05-05
          • 1970-01-01
          • 2010-12-10
          • 2015-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多