我试图将按钮的禁用属性绑定到2个可观察对象中:
1.如果在特定表格上没有选择数据
2.如果在同一张桌子上选择了多于1个数据。
做类似的事情:
button.disableProperty().bind(Bindings.and(Bindings.isEmpty(myTable.getSelectionModel().getSelectedItems()),
myTable.getSelectionModel().getSelectedItems().size() > 1));
' Bindings.and'不允许我这样做,并给出以下错误:
" Bindings类型中的方法和(ObservableBooleanValue,ObservableBooleanValue)不适用于参数(BooleanBinding,boolean)"
我知道它允许2个BooleanBindings,因此我试图像第二个条件一样投射
(BooleanBinding) myTable.getSelectionModel().getSelectedItems().size() > 1
或
(ObservableBooleanValue) myTable.getSelectionModel().getSelectedItems().size() > 1
并且两者都受到限制。
提前致谢!
答案 0 :(得分:3)
你不能做这样的事情的原因是boolean
是一个原始值 - 你不能把它投射到一个可观察的,因为它无法知道基础值何时改变。
您需要创建一个绑定,只要底层值发生更改,它就会更新。幸运的是,Bindings类有方便的方法来帮助它。在您的情况下,您需要将ObservableList
转换为可观察的整数,然后检查它是否大于1:
Bindings.size(myTable.getSelectionModel().getSelectedItems()).greaterThan(1)
这将为您提供BooleanBinding
,其值反映是否选择了多个项目。
作为附注 - 如果选择为空,则表示选择的项目恰好为零,因此我认为您的意思可能是or
而不是and
,因为您的条件是互斥的。