2013-02-17 79 views
2

我加入使用FXML監聽器:以編程方式刪除使用FXML添加的監聽器?

<RadioButton onAction="#onSelectionChanged" /> 

現在我需要以編程方式暫時禁用該監聽器。

現在我可以設置一些布爾變量「listenerDisabled」並在偵聽器中檢查這個變量,但我想要一種方法來禁用偵聽器而不更改它 - 所以我想刪除它。

這裏的問題是:如何引用我的代碼中的偵聽器,以便我可以使用以下內容?

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

感謝您的任何提示!

+0

相關問題:http://javafx-jira.kenai.com/browse/RT-12528 – 2013-02-19 23:23:38

+0

你可以在代碼附加一個監聽器呢? =) – 2013-02-19 23:24:27

回答

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

我沒有嘗試任何上述情況,但我不」看看爲什麼它不起作用。

+0

是的,這應該工作。我只是希望以某種方式直接引用創建的處理程序,但有時解決方案是太容易:) – Sebastian 2013-02-21 08:41:39

+0

有沒有辦法創造'的OnAction()'編程?否則,我將不得不創建和單選按鈕,並將其設置爲不可見,以便爲其設置操作,因爲我在組合框操作上創建了幾個不同的單選按鈕。起初在屏幕上沒有任何東西。 – Math 2014-04-17 11:45:26

相關問題