2016-11-30 72 views
-1

有人可以向我解釋爲什麼我需要在此代碼中使用repaint()方法嗎? 如果我不這樣做,我得到一個錯誤stackoverflowJava paint()方法溢出

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(); 
} 
+1

爲了儘快提供更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

回答

1

如果我不這樣做基於提供我們不能告訴你爲什麼我的代碼得到一個計算器錯誤

你會得到一個堆棧溢出。問題可能出在您與frameRate對象有關的方法之一。

不要從繪畫方法調用repaint(),這將導致無限的繪畫循環。

如果您正在嘗試做某種動畫,那麼您應該使用Swing Timer安排動畫,並在Timer觸發時調用repaint()

另外,不要重寫paint(...)。自定義繪畫是通過覆蓋paintComponent(...)完成的。

+0

只需刪除您的評論。 –