我正在创造一个游戏(Snake Clone)作为一种爱好。我正在查看Java API中Graphics类的dispose方法。当我注释掉dispose方法时,我的动画以相同的方式工作,无论是否有它。在Java API中,dispose方法执行此操作 - 释放图形上下文正在使用的系统资源。 Java垃圾收集管理程序的内存不是类似于dispose正在做的事情吗?我应该保留处理方法吗?
API在解释同步方法方面没什么帮助。但是从我在其他论坛中读到的内容来看,ToolKit类的sync方法是确保绘图操作(比如我想的paintComponent方法)刷新到显卡。图形卡的工作是清除程序以前图形上下文的剩余部分吗?
以下是代码:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
答案 0 :(得分:7)
说到Graphics
,有一个简单的原则。
如果您明确创建它(例如BuffereImage.createGraphics()
),则将其丢弃。
paintComponent(Graphics g)
中的OTOH实例g
由工具包提供,并在需要时进行处理。在您自己的代码中执行此操作将导致“不可预测的”渲染。