繁体   English   中英

帮助在Java小程序中显示图像

[英]Help displaying an image in a java applet

下面是一个简单的小程序,用于显示单张图片。 代码编译正常,applet加载但图像文件永远不会被绘制到applet。 我认为它无法使用this.getImage(appletBaseURL,filename)找到图像; 我将图像文件存储在与此软件包关联的所有文件夹中,但仍然没有绘制它。

    import java.applet.Applet;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;


   public class imageTest extends Applet {

    private Image spaceShip;    
    private final String filename = "spaceshipcropped.jpg";        
    public void init() {

        java.net.URL appletBaseURL = getCodeBase();
        File file = new File("spaceshipcropped.jpg");
        try {
            spaceShip = ImageIO.read(file);
        } catch (IOException ex) {
            Logger.getLogger(imageTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;    
        g2d.drawImage(spaceShip, 0,0, null);
    }

    public void update(Graphics g) {
       repaint();
    }
}

在我做了这些改变后,它起作用了。 非常感谢你们的帮助!

  1. 不要在applet中调用setSize() 大小由HTML设置。
  2. 在这个千年里,不要在AWT中编码。
  3. 传递给Swing组件的对象应该是Graphics2D对象,但我从来没有听说过Applet的相同内容。 你在检查Java控制台吗?
  4. 该代码有一些冗余导入。
  5. paint方法中,检查图像是否为null
  6. getImage(URL,String)方法的JavaDocs状态“此方法始终立即返回,无论图像是否存在。” 在第3个千年中添加MediaTracker或加入我们并使用ImageIO.read(URL) - 它会一直阻塞,直到加载图像。

我希望定点6可以解决问题,但也要考虑其他5点。

加上这个

public void update(Graphcs g) {
    repaint();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM