我对几件事有些困惑:
示例代码,显示了我的问题,这是无法编译的
// image
private BufferedImage image;
private Graphics2D graphic;
private changeImage;
. . .
//thread loop
while (running) {
. . .
render();
Graphics showGraphic = getGraphics();
showGraphic.drawImage(image, 0, 0, null);
showGraphic.dispose();
}
public void render(){
if(changeImage == 1)
graphic.drawImage(ImageLoader.TREE, 0, 0, null);
else if(changeImage == 2){
graphic.drawImage(ImageLoader.HOUSE, 0, 0, null);
. . .
graphic.fillRect(50,60,30,40);
}
}
我创建了一个全局对象, Graphic2D并在其中绘制了内容 render(),但我没有repaint()在游戏循环内调用
它,这样做是否是一种好习惯?
我应该repaint()在循环和paintComponent()函数内部使用吗?
另一件事,如何graphic.dispose()正常工作?,因为尝试删除此行代码,因此没有任何反应。
我了解java docs的dispose()的工作方式 , 但是我没有注意到dispose()与否的任何区别。
我的程序运行得很好,但是我有这个问题。