JavaFX& FXML:将ChangeListener分配给observable属性

时间:2013-11-27 10:51:53

标签: java javafx-2 fxml

根据JavaFX tutorial,应该可以将事件处理程序注册到FXML中的可观察属性:

  

任何定义setOnEvent()方法的类都可以在标记中分配一个事件处理程序,任何可观察的属性都可以(通过“onPropertyChange”属性)。

现在,我正在尝试为ToggleButton的selected属性注册一个事件处理程序:

<ToggleButton text="%SomePane.fooButton.text" onSelectedChanged="#handleFooSelectedChanged" toggleGroup="$toggleGroup"/>

并在控制器中:

@FXML
public void handleFooSelectedChanged(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {

}

但我收到以下错误:

  

引起:javafx.fxml.LoadException:控制器方法   找不到“handleFooSelectedChanged”。

我是否必须更改方法签名?这是一个错误吗?或者这根本不受支持?

1 个答案:

答案 0 :(得分:2)

你的FXML属性错了!模式为on<PropertyName>Change(没有'd'),而不是on<PropertyName>Changed

所以这应该有效:onSelectedChange="#handleFooSelectedChanged"

注意:您的控制器方法也可以如下所示:

@FXML
public void handleFooSelectedChanged(BooleanProperty observable, boolean oldValue, boolean newValue);