首页 > 解决方案 > javafx中运行程序时如何在布局中添加或删除节点

问题描述

我在 javafx 中编写了一个代码,它基于一个字符串构建一个布局,在我按下一个特定的按钮后,它会读取另一个字符串并构建一个完全不同的布局。这是代码:

Service<Void> cicle = new Service<Void>() {
    @Override
    protected Task<Void> createTask() {
        return new Task<Void>() {
            @Override
            protected Void call() throws Exception {
                String[] map = { "10", "10", "logo" };

                boolean waiting = false;

                Timer.start();
                while (Timer.update() / 1000 < time) {
                    if (!waiting) {
                        for (int i = 0; i < map.length; i += 3) {
                            Label gigi = new Label("hi");
                            gigi.setLayoutX(Integer.parseInt(map[i]));
                            gigi.setLayoutX(Integer.parseInt(map[i + 1]));
                            // HERE is where i shoul add the label gigi
                        }
                        waiting = true;
                    }
                    System.out.println(Timer.update());
                }
                end();
                return null;
            }
        };
    }
};

但是如果我使用 layout.getChildrens().add(node) 它不起作用,如果我完全重建舞台的场景它会停止程序

标签: javajavafxlayouttask

解决方案


刚刚使用 Platform.runLater 并且它可以工作


推荐阅读