所以我有这个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();
}
});
不确定这是否只是一种完全错误的方法,或者我是否遗漏了重要的东西。我希望你们能搞清楚。
答案 0 :(得分:0)
所以在Uluk Biy的帮助下,我遇到了问题。在更新例程中,按钮是新创建的,因此它不再存在它的事件处理程序。我将按钮添加到属性中,因此每次调用更新例程时都不需要替换它,并且事件处理程序仍然存在。