我正在使用FXML添加一个监听器:
<RadioButton onAction="#onSelectionChanged" />
现在我需要以编程方式暂时禁用此侦听器。
现在我可以设置一些布尔变量“listenerDisabled”并在监听器中检查这个变量,但是我想要一种方法来禁用监听器而不改变它 - 所以我想删除它。
这里的问题是:如何在我的代码中引用侦听器,以便我可以使用以下内容?
RadioButton.selectedProperty().removeListener(<what to place here?>)
感谢任何提示!
答案 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);
我没有尝试上述任何一种,但我不明白为什么它不起作用。