gpt4 book ai didi

java - 等待一定时间后打印不同的文本(JavaFX)

转载 作者:行者123 更新时间:2023-12-01 19:28:29 25 4
gpt4 key购买 nike

我打印一些文本,然后我想等待 2 秒并在屏幕上打印其他内容。我用谷歌搜索了一下,使用线程和调用方法似乎一切都太过分了。我确信有一个更简单的方法。

这是我尝试过的:

public class Test extends Application {

@Override
public void start(Stage primaryStage) {

GridPane root = new GridPane();
primaryStage.setScene(new Scene(root, 1000, 1000));
Text text = new Text("bla");




root.getChildren().addAll(text);
primaryStage.show();

try {
Thread.sleep(2000);
}
catch(Exception e) {

}
root = new GridPane();
root.getChildren().addAll(new Text("adsasd"));
primaryStage.show();

}


public static void main(String[] args) {
Test.launch();
}
}

最佳答案

JavaFX 与几乎所有用户界面工具包一样,在单个线程上运行。您的 sleep 调用会阻塞该线程。当该方法处于 hibernate 状态时,不会显示任何窗口,不会重绘任何内容,并且不会处理任何用户输入。

简而言之,您不能在 JavaFX 调用的方法中 hibernate 或导致任何其他重大延迟。

JavaFX 在javafx.animation 中提供了大量的类。将正确实现延迟的一揽子计划。在你的情况下,PauseTransition 会起作用。

PauseTransition delay = new PauseTransition(Duration.seconds(2));
delay.setOnFinished(e -> root.getChildren().add(new Text("adsasd")));
delay.play();

(您还可以创建 Thread、ScheduledExecutorService、延迟的 CompletableFuture 或 java.util.Timer,但这些需要使用 Platform.runLater 。另外,您已表明您正在尝试避免线程。PauseTransition 是可能是最直接的解决方案。)

关于java - 等待一定时间后打印不同的文本(JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60622048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com