![](/img/trans.png)
[英]calling repaint does not result in paint method being called in thread
[英]Repaint() not being called in Thread
我有一个正在实施扑克游戏的jFrame。 我有一条线,以便计算机对手采取行动。 我尝试实现它,以便线程在有人转弯时等待。 但是,在我什至没有加入人类玩家之前,该框架不会调用repaint()
。 我已经在Netbeans中使用调试器进行了检查:它确实到达了框架调用repaint()
,但是由于某种原因,它实际上并没有这样做。 这是代码:
public void run() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < players.size(); j++) {
Card card = deck.draw();
players.get(i).addToHand(card);
output.append("Player " + players.get(i).getName() + " got a " + card + ".\n");
System.out.println("Player " + players.get(i).getName() + " got a " + card + ".\n");
}
}
while (true) {
if (!players.isEmpty() && players.get(0) instanceof HumanPlayer)
humansTurn = true;
if (humansTurn) {
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
}
}
} else if (humanMoveMade) {
playMove(humanMove, players.remove(0));
humanMoveMade = false;
}else {
//unrelated code, then:
debug.update();
repaint();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
}
}
基本上,它应该得到的是else
,每当演奏人赚不到他或她的举动,它并获得该repaint
,但它从来没有经历出于某种原因。 出现窗口,但没有任何组件。
编辑:我还应该提到在repaint()
之前应该调用debug.update()
方法来更新另一帧上的信息,但是该窗口中也没有任何显示...
我需要尽快做好准备,因此我确实需要一些帮助。 到底是怎么回事?
抱歉,虚惊。 我忘了检查何时创建此框架。 事实证明,我不小心调用了run()
方法,而不是像通常那样运行线程(我曾尝试实现一些不同的东西)。 回到创建新线程并调用start()
,它现在可以工作了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.