Java我只想在变量更改时重绘

She*_*ard 1 java swing repaint paintcomponent

我有一种方法可以写出剩下多少猜测,并且我希望每次人们错过字母或单词时都要重新绘制,但是它会一直重新绘制,这会导致整个程序不断闪烁.

我的方法看起来像这样:

public void repaintWord(Graphics g){
    g.SetColor(Color.RED);
    g.drawString("You have " + getN() + " guesses left", 400, 50);
    repaint();
}
Run Code Online (Sandbox Code Playgroud)

当getN()改变它的值时,如何只重画一次?

hmj*_*mjd 5

存储上次退出getN()时的值repaintWord()并与getN()入口进行比较:

private int lastN = ??; /* Value for max guesses. */

public void repaintWord(Graphics g)
{
    if (lastN != getN())
    {
        lastN = getN();
        g.SetColor(Color.RED);
        g.drawString("You have " + lastN + " guesses left", 400, 50);
        repaint();
    }
}
Run Code Online (Sandbox Code Playgroud)