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

时间:2012-08-16 21:45:45

标签: java swing repaint paintcomponent

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

我的方法如下:

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

当getN()更改其值时,如何仅重画一次?

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:2)

lastGuessCount存储为成员变量:

bad 猜测:

lastGuessCount--;

然后使用:

if (getN() != lastGuessCount) {
    repaintWord(g);
}