JavaFX 8在事件中循环更新ImageView

时间:2015-11-02 13:09:16

标签: java javafx-8 scenebuilder

我有一个二十一点程序,我想用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());
    }
}

1 个答案:

答案 0 :(得分:-1)

使用预定的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);