如何将 controlsFX 与 FXML 一起使用

How to use controlsFX with FXML

我正在使用 ControlsFX ToggleSwitch,就像这样:

<ToggleSwitch fx:id="toggle" onAction="#handleToggleAction" mnemonicParsing="false" GridPane.columnIndex="1" />

我希望能够将对此 ToggleSwitch 的操作与我的控制器中的方法相关联。

这是我在控制器中的一些代码:

@FXML
private void handleToggleAction(ActionEvent event) throws IOException {
    Boolean selected = ((ToggleSwitch) event.getSource()).isSelected();

    if(selected) {
        //do something
    } else {
        //something else
    }
}

这导致我出错:

Cannot determine type for property.

我不知道为什么这会导致错误。在使用 ToggleSwitch 之前,我使用的是 ToggleButton 并且处理程序方法工作正常。 任何帮助表示赞赏。

ToggleSwitch根本不包含一个onAction属性.

因此,最好在控制器的 initialize 方法中注册一个侦听器:

@FXML
private void initialize() {
    toggle.selectedProperty().addListener((observable, oldValue, newValue) -> {
        if(newValue) {
            //do something
        } else {
            //something else
        }
    });

}