如何在javaFX中正确执行Thread.sleep()? [复制]

2023-12-10

我正在编写一个简单的代码,用 javaFX 显示表的内容。 我希望程序在每次显示新内容时暂停。

for(int i = 0; i < table.size(); i++){
    label.setText(table[i]);
    Thread.sleep(2000); // The program stops for 2 seconds 
}

问题是,Thread.sleep()没有按计划进行。事实上,程序甚至在显示内容之前就暂停了。

我该如何纠正这个问题?


你应该使用Timeline为了这个任务。它允许您在给定的时间间隔内重复触发在应用程序线程上运行的事件,而不会通过阻止 JavaFX 应用程序线程来阻止场景的布局/渲染。

label.setText(table[0]); // set text for the first time

Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(2), new EventHandler<ActionEvent>() {

    private int i = 1;    

    @Override
    public void handle(ActionEvent event) {
        label.setText(table[i]); // display next string
        i++;
    }
}));
timeline.setCycleCount(table.length - 1);
timeline.play();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在javaFX中正确执行Thread.sleep()? [复制] 的相关文章

随机推荐