0
我有一个实现扑克游戏的jFrame。我有一个线程,以便计算机对手花时间采取行动。我试图实现它,以便线程在人轮出现时等待。但是,在我甚至把一名人类玩家放入之前,该框架并不会拨打repaint()
。我在Netbeans中使用过调试器来检查这个问题:它确实到达了框架调用repaint()
的那一行,但由于某种原因它实际上并没有这样做。下面的代码: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()
方法调用应该更新其他框架的信息,但没有被显示在该窗口向上...
我需要尽快有这个准备,所以我真的需要一些帮助。到底是怎么回事?