等待场景重画

时间:2014-04-10 10:56:42

标签: java events javafx

有没有可能等待场景重绘的方法?

我的问题是,我想使用getChildren()。add()向窗格添加注释,然后使用Node.fireEvent(event)在此节点上触发事件。

但事件未执行。我认为问题是,场景没有重新粉刷,因此Node现在不是新场景的一部分。

所以最好的方法是等待场景重绘,然后点燃我认为的事件。

2 个答案:

答案 0 :(得分:0)

我不知道你在这里使用的是哪个UI组件,但是,尝试找出组件的invalidate()方法(或类似的东西),以使其更新屏幕。

答案 1 :(得分:-1)

你可以发布代码吗?这对我来说很好:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class NewNodeEventTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        HBox root = new HBox(5);
        Button newNodeButton = new Button("Add button");
        newNodeButton.setOnAction(event -> {
            Button newButton = new Button("Button");
            newButton.setOnAction(e -> System.out.println("New button pressed"));
            root.getChildren().add(newButton);
            ActionEvent evt = new ActionEvent(newButton, newButton);
            newButton.fireEvent(evt);
        });
        root.getChildren().add(newNodeButton);

        Scene scene = new Scene(root, 250, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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