4

我正在创建一个游戏(蛇克隆)作为一种爱好。我正在查看 Java API 中 Graphics 类的 dispose 方法。当我注释掉 dispose 方法时,无论有没有它,我的动画都可以正常工作。在 Java API 中, dispose 方法执行此操作 - 释放图形上下文正在使用的系统资源。Java 垃圾回收不是像 dispose 那样管理程序的内存吗?我应该保留 dispose 方法吗?

API 在解释同步方法方面没有多大帮助。但是从我在其他论坛上看到的内容来看,ToolKit 类中的同步方法是为了确保绘图操作(如我想的 paintComponent 方法)刷新到显卡。那么图形卡的工作是清理程序先前图形上下文的任何残留物吗?

这是代码:

 public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Toolkit.getDefaultToolkit().sync();
            g.dispose();

     }
4

1 回答 1

8

说到Graphics这里,有一个简单的原则。

如果你明确地创建它(例如BuffereImage.createGraphics())然后处理它。

paintComponent(Graphics g)实例中的OTOHg由工具包提供,并在需要时/在需要时处理。在您自己的代码中这样做会导致“不可预测”的渲染。

于 2012-12-31T02:53:15.963 回答