2

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

<RadioButton onAction="#onSelectionChanged" />

现在我需要以编程方式暂时禁用这个监听器。

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

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

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

感谢您的任何提示!

4

1 回答 1

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);

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

于 2013-02-20T20:49:36.973 回答