有人可以向我解释为什么我需要将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(...)
完成的。