0
我不知道如何暫停中間的事件處理程序,我甚至不知道它是否可能。 Infact,在附帶的代碼中,我想: 玩家點擊單元格後,UI會根據玩家點擊的內容更新單元格。 然後,用戶界面暫停2秒。然後計算機播放,更新單元格。 非常感謝您的回答,我很絕望;)如何在事件處理程序中間暫停UI?
for (Cell cell : cells) {
if (cell.getHouseNumber() >= 6) {
cell.setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
cell.setFill(Color.WHITE);
System.out.println(cell.getHouseNumber() - 6);
if(player1.sow(cell.getHouseNumber() - 6)){
for (int i = 0; i < cells.length; i++) {
if (i < 6) {
cells[i].setSeedsNumber(player1.getSeeds(cells[i].getHouseNumber()));
try {
cells[i].setImage();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
cells[i].setSeedsNumber(player1.getSeeds(cells[i - 6].getHouseNumber()));
try {
cells[i].setImage();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
southBoard.setSeedsNumber(player1.getPlayerScore());
playerTurnLabel.setText("Computer playing");
//PAUSE THE UI FOR 2s
player2.computerMove();
for (int i = 0; i < cells.length; i++) {
if (i < 6) {
cells[i].setSeedsNumber(player1.getSeeds(cells[i].getHouseNumber()));
try {
cells[i].setImage();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
cells[i].setSeedsNumber(player1.getSeeds(cells[i - 6].getHouseNumber()));
try {
cells[i].setImage();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
playerTurnLabel.setText("Your turn to play");
}else{
playerTurnLabel.setText("Move prohibited ...");
}
}
});
}
}
您應該考慮使用線程進行耗時的計算。 – abbath