簡體   English   中英

等待一段時間后打印不同的文本 (JavaFX)

[英]Printing a different text after waiting a certain period of time (JavaFX)

我打印了一些文本,然后我想等待 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調用會阻止該線程。 當該方法處於休眠狀態時,不顯示任何窗口,不重新繪制任何內容,也不處理任何用戶輸入。

簡而言之,您不能在 JavaFX 調用的方法中休眠或導致任何其他顯着延遲。

JavaFX 在javafx.animation包中提供了許多類,它們將正確地制定延遲。 在您的情況下, PauseTransition 將起作用。

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

(您也可以創建 Thread、ScheduledExecutorService、delayed CompletableFuture 或 java.util.Timer,但這些都需要使用Platform.runLater 。另外,您已經表明您正在嘗試避免線程。PauseTransition 可能是最直截了當的解決方案。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM