【发布时间】:2020-12-10 22:47:55
【问题描述】:
我的目标
我有一个带有布尔列的可编辑表,可以在其中选中或取消选中包含的复选框和多行选择策略。我希望我的表格在我选中或取消选中一个时自动切换所有选定行的所有复选框。 不知道你是否明白这一点:D 我的意思是:
- 我选择了多行
- 我选中或取消选中这些选定行之一的复选框
- 所有其他行的复选框会自动选中或取消选中
现在应该清楚了;)
我的问题
(我是 JavaFX 的新手!我已经用 AWT/SWING 完成了我要求的同样的事情,但无法让它与 JavaFX 一起使用)
JavaFX 中是否已经内置了类似的功能?如果没有,实现我的目标的最佳方法是什么?
到目前为止我做了什么
我发现,您可以通过将 CheckBoxTableCell-Callback 设置为所需列的 CellFactory 来监听更改事件。我是这样做的:
TableColumn<FileSelection, Boolean> selectedColumn = new TableColumn<>("Sel");
selectedColumn.setCellValueFactory(new PropertyValueFactory<>("selected"));
selectedColumn.setCellFactory(CheckBoxTableCell.forTableColumn(rowidx -> {
if (tblVideoFiles.getSelectionModel().isSelected(rowidx)) {
tblVideoFiles.getSelectionModel().getSelectedItems().forEach(item -> {
if (!item.getFile().equals(tblVideoFiles.getItems().get(rowidx).getFile())) {
item.selectedProperty().set(!item.selectedProperty().get());
}
});
}
return fileList.get(rowidx).selectedProperty();
}));
这里的问题:一旦复选框被更改,它就会自动切换,从而导致检查和取消检查自身的切换循环:D 我怎样才能阻止这种情况?
【问题讨论】:
-
minimal reproducible example 请.. ;)
-
@kleopatra 对不起,你是对的。我应该已经提供了 Item-Class 以及至少带有表格的应用程序结构。实际上,James_D 提供了我应该做的一切。那么您认为有必要更新我的问题吗?如果是,我会这样做。 :)
标签: javafx checkbox tablecolumn