【问题标题】:Java Repaints only every other guessJava 仅重绘每隔一个猜测
【发布时间】:2012-08-17 10:39:59
【问题描述】:

我有一个函数可以打印玩家的猜测次数。
这是代码:

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...

如何让它每次都改变?

【问题讨论】:

  • 你能提供一个SSCCE吗?
  • 在绘制周期中从不添加更改组件状态(调用时不可控)

标签: java swing repaint paintcomponent


【解决方案1】:

所以你需要这样做:

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

repaintif 条件之外,现在在这种情况下paint 每次都会被调用

【讨论】:

  • 它一直在重新绘制自己,导致整个程序闪烁,在这种情况下我需要它处于 if 状态
  • 那么它只会repaint,如果条件为真,你可以在上面的例子中repaint之后使用Thread.sleep这样的延迟
  • @HarmeetSingh Thread.sleep 和 Event Dispatch Thread 一起根本没有完成
  • @Robin 当然,我正在等待 SSCCE 做出更多澄清。
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多