【发布时间】:2015-11-05 21:28:24
【问题描述】:
所以我试图将图像绘制到 JFrame 上,并且我使用默认工具包作为图像观察器,但是每次运行项目时它都不会绘制图像,但是它会绘制和移动(成功) 我测试的其他形状。
private class Painter extends JPanel implements ImageObserver {
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Toolkit tk = Toolkit.getDefaultToolkit();
Image player = tk.createImage("player.jpg");
tk.prepareImage(player, 50, 50, rootPane);
g.setColor(Color.red);
// g.drawRect(x, y, 50, 50);
g.drawImage(player, 200, 200, this);
window.repaint();
}
}
【问题讨论】:
-
图片在哪里? createImage 将在当前工作目录中的文件系统中查找名为“player.jpg”的文件
-
图片与包位于同一文件夹内
-
假设您的意思是图像与类在同一个包中或直接在源内部,那么,您的问题就来了。您需要使用
Class#getResource获取资源的URL,然后您可以从中加载图像。您可以使用ImageIO.read(getClass().getResource("player.jpg"))加载图像,但已经说明,您不应该在paint 方法中执行此操作 -
private class Painter extends JPanel implements ImageObserver {implements ImageObserver部分是多余的,因为每个java.awt.Component(JComponent和JPanel扩展)都已经实现了ImageObserver..