我的图形用户界面有一个奇怪的行为。首先这里有一段代码:
/**
*
*/
@Override
protected Void doInBackground() throws Exception {
final ModelGameState actualGameState = controller.getActualGameState();
final ModelCoinState actualCoinState = (actualGameState.getPlayersTurn() == ModelConstants.PLAYER_ONE_ID? actualGameState.getCoinsPlayerOne() : actualGameState.getCoinsPlayerTwo());
final List<ModelCoinState> temp = MoveCalculator.getMoves(actualCoinState, this.cellID);
final CountDownLatch lock = new CountDownLatch(temp.size());
int time = 500;
for(int i = 0; i < temp.size(); i++) {
final int index = i;
Timer timer = new Timer(time, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(actualGameState.getPlayersTurn() == ModelConstants.PLAYER_ONE_ID) {
actualGameState.setCoinsPlayerOne(temp.get(index));
} else {
actualGameState.setCoinsPlayerTwo(temp.get(index));
}
controller.setActualGameState(new ModelGameState(actualGameState));
lock.countDown();
}
});
timer.setRepeats(false);
timer.start();
time += 500;
}
lock.await();
return null;
}
在第二这里我的gui:
这里是我的问题:每次调用 lock.await 我的屏幕看起来像这样:
如您所见,在我的每个圆圈后面,每次调用 lock.await() 时都会显示我的 gui 的左上角(至少我认为它是在调用 lock.await() 时,因为当我删除 lock.await( ) 我看不到我的 gui 的整个动画,但我也看不到这种奇怪的行为,并且当程序通过 doInBackground() 的所有代码时,这种行为总是出现。
是什么导致了这种奇怪的行为?