0

下面是一个简单的小程序,我正在编写以显示单张图片。代码编译良好,小程序加载,但图像文件从未绘制到小程序。我认为它无法使用 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();
    }
}

在我进行这些更改后,它起作用了。非常感谢大家的帮助!

4

2 回答 2

2
  1. 不要调用setSize()小程序。大小由 HTML 设置。
  2. 在这个千年不要在 AWT 中编码。
  3. 传递给 Swing 组件的对象应该是一个Graphics2D对象,但我从未听说过对Applet. 你在检查 Java 控制台吗?
  4. 该代码有一些多余的导入。
  5. paint方法中,检查图像是否为null.
  6. getImage(URL,String)方法的 JavaDocs 声明“此方法总是立即返回,无论图像是否存在。” MediaTracker在第三个千年中 添加或加入我们并使用ImageIO.read(URL)- 在加载图像之前阻塞。

我希望解决第 6 点可以解决问题,但也要注意其他 5 点。

于 2011-09-09T16:06:32.080 回答
0

添加这个

public void update(Graphcs g) {
    repaint();
}
于 2011-09-09T15:56:37.333 回答