我有一个关于Java的快速问题。如果这个问题非常基本,我很抱歉,但我是Java初学者:D
我想在一个窗口中渲染一个二维图像,但我无法弄明白。我在这里查看了图形API:
http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html
我唯一可以找到的方法是drawImage()。 但是,这对我不起作用,但也许它与ImageObserver Observer参数有关?我只是在我找到的某个教程之后将null放在那里,但我仍然遇到编译错误: 这是我的绘画方法:
public void paint(Graphics g)
{
Image img1 = Toolkit.getDefaultToolkit().getImage("theImage.png");
g.drawImage(img1, 100, 100, null);
} // public void paint(Graphics g)
以下是调用它的方法:
public static void main(String[] args)
{
MyGame game = new MyGame();
game.setVisible(true);
game.play();
} // public static void main(String[] args)
/** The play method is where the main game loop resides.
*/
public void play()
{
boolean playing = true;
//Graphics g = new Graphics();
while (playing)
{
paint();
}
} // public void play()
事情就是当我在while循环中调用paint时,我收到此错误: MyGame中的paint(java.awt.Graphics)无法应用于()
这是什么意思?如何修复它以便我可以成功渲染2d图像?
提前致谢:D
答案 0 :(得分:8)
而不是paint();
使用repaint();
答案 1 :(得分:3)
你应该压倒paintComponent(Graphics g)
。另外,正如@TotalFrickinRockstarFromMars建议的那样,您应该调用repaint()
。
答案 2 :(得分:1)
类游戏扩展了JComponent {//你的游戏类
Image img = null;
public Game() {
img = getImage("/theImage.png");
}
private Image getImage(String imageUrl){
try {
return ImageIO.read(getClass().getResource(imageUrl));
} catch (IOException exp) {}
return null;
}
paintComponent(Graphics g){
g.drawImage(img, 100, 100, null);
}
}