【问题标题】:Java paint() method overflowJava paint() 方法溢出
【发布时间】:2016-11-30 20:04:32
【问题描述】:

有人可以向我解释为什么我需要将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();
}

【问题讨论】:

标签: java swing jframe paint


【解决方案1】:

如果我不这样做,我会收到 stackoverflow 错误

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

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

如果您尝试制作某种动画,那么您应该使用Swing Timer 来安排动画,并在Timer 触发时调用repaint()

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

【讨论】:

  • 删除你的 cmets。
猜你喜欢
  • 2017-03-17
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多