【发布时间】:2017-02-17 14:57:04
【问题描述】:
如果未选择任何内容或选择了多行,我需要禁用应用程序中的按钮。
我创建了以下绑定(额外的代码来调试它,因为它不工作)..
BooleanBinding singleDocIsntSelected =
Bindings.createBooleanBinding(() -> {
boolean result = documentTable.getSelectionModel().getSelectedItems().size() != 1;
return result;
}, documentTable.getSelectionModel().selectedItemProperty());
发生在我身上的是,当我选择第一行时,它会触发,然后如果我 CTRL + 单击同一行,它会再次触发。到目前为止,世界上一切都很好。然后我单击同一行 - 什么都没有,或者当我 CTRL 单击其他行时什么都没有。
我的按钮将保持错误状态。
但是,如果我还向该属性添加了一个侦听器:
ChangeListener<MyDTO> selectedItemsListener = (obs, ov, nv) -> {
boolean result = table.getSelectionModel().getSelectedItems().size() != 1;
System.err.println(result);
};
然后一切正常。
没有其他方法可以解决这个问题吗?
【问题讨论】:
-
我试过了——同样的问题。