下面是一个简单的小程序,用于显示单张图片。代码编译正常,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();
}
}
在我做了这些改变后,它起作用了。非常感谢你的帮助!
答案 0 :(得分:2)
setSize()
。大小由HTML设置。 Graphics2D
对象,但我从来没有听说过Applet
的相同内容。你在检查Java控制台吗? paint
方法中,检查图片是否为null
。 getImage(URL,String)
方法状态的JavaDocs“此方法始终立即返回,无论图像是否存在。”添加MediaTracker
或加入我们的第3个千禧年并使用ImageIO.read(URL)
- 在图像加载之前会阻塞。我希望定点6可以解决问题,但也要注意其他5点。
答案 1 :(得分:0)
添加此
public void update(Graphcs g) {
repaint();
}