【问题标题】:JavaFX Adding row on GridPane after 2 secondsJavaFX 2 秒后在 GridPane 上添加行
【发布时间】:2018-08-22 17:37:09
【问题描述】:

给定:

    BorderPane root = new BorderPane();
    GridPane block = new GridPane();
    block.addRow(0, new Text("HELLO"));

    ScheduledExecutorService someScheduler = Executors.newScheduledThreadPool(4);
    someScheduler.schedule(() -> {
        System.out.println("IN");
        block.addRow(1, new Text("WORLD"));
        System.out.println("OUT");
    }, 2, TimeUnit.SECONDS);

    root.setCenter(block);

    Scene scene = new Scene(root, 1280, 720);
    primaryStage.setScene(scene);
    primaryStage.show();

GridPane 不应该在 2 秒后添加一行吗?输出到达 IN 但从未到达 OUT。有人可以向我解释这种行为吗?

【问题讨论】:

标签: java javafx gridpane


【解决方案1】:

试一试,我添加了Platform.runlater(()->...

public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        GridPane block = new GridPane();
        block.addRow(0, new Text("HELLO"));

        new Timer().schedule(
                new TimerTask() {
                    @Override
                    public void run() {
                        System.out.println("IN");
                        Platform.runLater(()->block.addRow(1, new Text("WORLD")));
                        System.out.println("OUT");
                    }
                },
                0,
                2*1000);//2 seconds

        root.setCenter(block);

        Scene scene = new Scene(root, 1280, 720);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2014-08-22
    • 2022-12-31
    • 2014-04-13
    相关资源
    最近更新 更多