JavaFX按钮事件只触发一次

时间:2014-08-28 10:39:17

标签: events button javafx

所以我有这个JavaFX应用程序,它包含一个按钮,应该打开DirectoryChooser onclick。当我触发它一次时,它会完成应该做的事情,非常好。一旦我关闭DirectoryChooser对话框,该按钮就不再执行任何操作。我在网上搜索一些“事件重置”或类似的东西,因为我认为事件可能仍然“活跃”,因此不再触发,但没有任何结果:

// first attempt
button.addEventFilter(MouseEvent.MOUSE_CLICKED, 
    new EventHandler<MouseEvent>() {
        public void handle(MouseEvent e) {
            // dirChooser.setTitle("Select Directory:");
            file = dirChooser.showDialog(primaryStage);

            // just incase only the DirectoryChooser wasn't opening
            System.out.println("asdf");

            // updates the application view with the new selected path
            update();

            // not sure, if this affects anything
            // found it while looking for resetting of events
            e.consume();
        };
    }
);
// secont attempt
button.setOnAction(new EventHandler<ActionEvent>() {
    @Override public void handle(ActionEvent e) {
        DirectoryChooser dirChooser = new DirectoryChooser();
        dirChooser.setTitle("Select Directory:");
        file = dirChooser.showDialog(primaryStage);
        update();
    }
});

不确定这是否只是一种完全错误的方法,或者我是否遗漏了重要的东西。我希望你们能搞清楚。

1 个答案:

答案 0 :(得分:0)

所以在Uluk Biy的帮助下,我遇到了问题。在更新例程中,按钮是新创建的,因此它不再存在它的事件处理程序。我将按钮添加到属性中,因此每次调用更新例程时都不需要替换它,并且事件处理程序仍然存在。