![](/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.