Java Paint()方法溢出



有人可以向我解释为什么我需要将repaint()方法放入此代码中?如果我不这样做,我会得到stackoverflow错误

private class GamePanel extends JPanel
{
    public void paint(Graphics g)
    {
        super.paint(g);
        onPaint(g);
    }
 }

protected void onPaint(Graphics g)
{
    frameRate.calculate();
    g.setColor(Color.WHITE);
    g.drawString(frameRate.getFrameRate(),30,30);
    repaint();
}

如果我不这样做,我会得到一个stackoverflow错误

基于提供的代码,我们无法告诉您为什么要堆栈溢出。问题可能在于您与frameRate对象相关的方法之一。

不要从绘画方法调用repaint(),这将导致无限的绘画环。

如果您想做某种动画,则应使用Swing Timer来安排动画以及Timer启动时调用repaint()

另外,不要覆盖油漆(...)。自定义绘画是通过覆盖paintComponent(...)完成的。

最新更新