我正在编写一个简单的代码,用javaFX显示表的内容。 我希望每次显示新内容时程序都会暂停。
for(int i = 0; i < table.size(); i++){
label.setText(table[i]);
Thread.sleep(2000); // The program stops for 2 seconds
}
问题是,Thread.sleep()
不能像计划那样工作。实际上,程序在显示内容之前暂停。
如何更正此问题?
答案 0 :(得分:1)
您应该使用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();