布尔绑定与selectionModelProperty问题

时间:2018-10-24 09:35:19

标签: binding javafx-8

我有一个带有文本字段,组合框和按钮的窗格。我希望该按钮仅在文本字段具有某些值且组合选择了某些元素时才启用,并且如果没有则禁用。默认情况下,组合没有选择。 我尝试过:

button.disableProperty().bind(Bindings.createBooleanBinding(() ->
  (combo.getSelectionModel().getSelectedIndex() == -1) || 
    textfield.getText().trim().isEmpty(),
  textfield.textProperty(),
  combo.selectionModelProperty()
));

但不起作用。如果我删除combo.selectionModelProperty()按钮,则根据文本字段内容启用和禁用正确性,因此combo.selectionModelProperty()似乎无法检测到组合中的项目更改。还有其他方法可以监听项目组合更改吗?

1 个答案:

答案 0 :(得分:1)

ComboBox本身的选择模型可以替换,但这是不寻常的,需要您自己进行替换。您正在尝试收听selectedIndex的{​​{1}}属性,因此应该使用

SelectionModel

或更好地使用combo.getSelectionModel().selectedIndexProperty() 属性:

ComboBox.value