以编程方式删除使用FXML添加的侦听器?

时间:2013-02-17 23:10:06

标签: listener javafx-2 actionlistener fxml

我正在使用FXML添加一个监听器:

<RadioButton onAction="#onSelectionChanged" />

现在我需要以编程方式暂时禁用此侦听器。

现在我可以设置一些布尔变量“listenerDisabled”并在监听器中检查这个变量,但是我想要一种方法来禁用监听器而不改变它 - 所以我想删除它。

这里的问题是:如何在我的代码中引用侦听器,以便我可以使用以下内容?

RadioButton.selectedProperty().removeListener(<what to place here?>)

感谢任何提示!

1 个答案:

答案 0 :(得分:3)

将fx:id规范添加到fxml:

<RadioButton fx:id="myRadio" onAction="#onSelectionChanged" />

在fxml的相应控制器中,使用@FXML表示法让FXMLLoader将单选按钮的引用注入控制器:

@FXML RadioButton myRadio;

要获取对侦听器的引用,请调用getOnAction

EventHandler<ActionEvent> myRadioActionEvent = myRadio.getOnAction();

要删除侦听器,请使用setOnAction

myRadio.setOnAction(null);

要再次添加侦听器,请再次使用setOnAction

myRadio.setOnAction(myRadioActionEvent);

我没有尝试上述任何一种,但我不明白为什么它不起作用。