JavaFX 8 在事件循环中更新 ImageView
JavaFX 8 Update ImageView in Loop in Event
我有一个二十一点程序,我想延迟 1 秒出牌。当我使用 Thread.sleep(1000)
时,它会等待并同时显示所有卡片。
do {
neueKarte(new ActionEvent());
Thread.sleep(1000);
} while (bot.getValue() <= 16);
循环结束后显示所有图像,而不是每秒显示一次
@FXML private void neueKarte(ActionEvent event) throws Exception {
if(spielerDran == true) {
sp1.nimmKarte(deck, 1);
punkte.setText("Deine Punkte: " + Integer.toString(sp1.getValue()));
naechstesFeld().setImage(sp1.hand.get(sp1.hand.size()-1).getImage());
if(sp1.hand.size()==2) {
aussteigen.setDisable(false);
}
if(sp1.getValue()>=21) {
zieheKarte.setDisable(true);
aussteigen(new ActionEvent());
}
} else {
bot.nimmKarte(deck, 1);
botPunkte.setText("Computer Punkte: " + Integer.toString(bot.getValue()));
naechstesFeld().setImage(bot.hand.get(bot.hand.size()-1).getImage());
}
}
使用Timer
预定,这里举例:
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// do the job here
if (bot.getValue() <= 16) {
neueKarte(new ActionEvent());
} else {
cancel();
}
}
});
}
}, 0, 1000);
我有一个二十一点程序,我想延迟 1 秒出牌。当我使用 Thread.sleep(1000)
时,它会等待并同时显示所有卡片。
do {
neueKarte(new ActionEvent());
Thread.sleep(1000);
} while (bot.getValue() <= 16);
循环结束后显示所有图像,而不是每秒显示一次
@FXML private void neueKarte(ActionEvent event) throws Exception {
if(spielerDran == true) {
sp1.nimmKarte(deck, 1);
punkte.setText("Deine Punkte: " + Integer.toString(sp1.getValue()));
naechstesFeld().setImage(sp1.hand.get(sp1.hand.size()-1).getImage());
if(sp1.hand.size()==2) {
aussteigen.setDisable(false);
}
if(sp1.getValue()>=21) {
zieheKarte.setDisable(true);
aussteigen(new ActionEvent());
}
} else {
bot.nimmKarte(deck, 1);
botPunkte.setText("Computer Punkte: " + Integer.toString(bot.getValue()));
naechstesFeld().setImage(bot.hand.get(bot.hand.size()-1).getImage());
}
}
使用Timer
预定,这里举例:
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// do the job here
if (bot.getValue() <= 16) {
neueKarte(new ActionEvent());
} else {
cancel();
}
}
});
}
}, 0, 1000);