在Java awt中闪烁(如何使用缓冲区?)

时间:2014-06-18 12:28:07

标签: java awt buffer

我的代码的一部分是这种绘制方法:

public void paint(Graphics g) {
    super.paint(g);
    refreshSize();
    paintSquares(g);
    if (drawGrid) {
        drawGrid(g);
    }
}

如何使用缓冲区来阻止它闪烁?

1 个答案:

答案 0 :(得分:0)

您可以通过使用空实现覆盖更新(Graphics g)方法来减少闪烁(更新的默认实现呈现背景)。如果这样做,您必须确保绘制组件的整个区域。

(注意:覆盖更新只对框架有帮助 - 其他组件仍会闪烁,因为包含框架)

那就是说,帮自己一个忙,然后转向Swing。

编辑:挖掘一下,后台渲染发生在java.awt.Container的update()实现中(Frame是Container ofc的子类)。结合backbuffer渲染(您需要自己处理,例如BufferedImage),您可以使用AWT自动提供的内容。