Java只会每隔一段时间重新绘制一次

Java只会每隔一段时间重新绘制一次,java,swing,repaint,paintcomponent,Java,Swing,Repaint,Paintcomponent,我有一个函数,可以显示一个玩家的猜测次数。 代码如下: public void drawString(Graphics g){ g.setColor(Color.RED); g.drawString("You have " + getN() + " guesses left", 400, 50); if (lastN != getN()){ repaint(); lastN = getN(); } } 我的问题是它每隔一段时间就重

我有一个函数,可以显示一个玩家的猜测次数。
代码如下:

public void drawString(Graphics g){
    g.setColor(Color.RED);
    g.drawString("You have " + getN() + " guesses left", 400, 50);
    if (lastN != getN()){
        repaint();
        lastN = getN();
    }
}
我的问题是它每隔一段时间就重新绘制一次。我的意思是:

首先打印:您还有10个猜测
当只剩下9次猜测时,它保持在10

然后打印:您还有8次猜测
发射型计算机断层扫描仪。直到有0

如何让它每次都改变

所以你需要做:

if (lastN != getN()){        
    lastN = getN();
}
repaint();
repaint
if
条件之外,现在在这种情况下,每次都会调用
paint
,因此您需要执行以下操作:

if (lastN != getN()){        
    lastN = getN();
}
repaint();

repaint
超出
if
条件,现在在这种情况下,每次调用
paint
时都会调用
paint

是否可以提供一个?从不在绘制周期中添加更改组件状态(调用时无法控制)是否可以提供一个?从不在绘制周期中添加更改组件状态(调用时无法控制)它一直在重新绘制自身,导致整个程序闪烁。在这种情况下,我需要它处于if条件下,然后它将只
重新绘制
。如果条件为真,您可以使用类似
线程的延迟。在上面的
重新绘制
后睡眠
example@HarmeetSingh
Thread.sleep
和事件调度线程在一起根本不可能-done@Robin当然,我在等待SSCCE做出更多的澄清。它一直在重新绘制自身,导致整个程序闪烁。在这种情况下,我需要它处于if条件下,它将只
重新绘制
。如果条件为真,您可以在
重新绘制后使用类似
线程.sleep
的延迟nt
在上面example@HarmeetSingh
Thread.sleep
和事件调度线程在一起根本就不存在-done@Robin当然,我正在等待SSCCE做出更多澄清。