假设我们有一个包含 3 列(A、B、C)的简单 Tableview。每列包含一些目前不重要的数据。
我想知道是否可以只选择整个列(无论用户在列中单击何处)并检索用户选择的该列的 ID 和/或索引?
例如,用户单击 B 列区域中的某处。在这种情况下,应标记整个列并返回索引 2。
如有任何帮助,我们将不胜感激;)
最佳答案
你可以尝试这样的事情:
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
table.getSelectionModel().setCellSelectionEnabled(true);
table.addEventFilter(MouseEvent.MOUSE_PRESSED, (event) -> {
if(event.isShortcutDown() || event.isShiftDown())
event.consume();
});
table.getFocusModel().focusedCellProperty().addListener((obs, oldVal, newVal) -> {
if(newVal.getTableColumn() != null){
table.getSelectionModel().selectRange(0, newVal.getTableColumn(), table.getItems().size(), newVal.getTableColumn());
System.out.println("Selected TableColumn: "+ newVal.getTableColumn().getText());
System.out.println("Selected column index: "+ newVal.getColumn());
}
});
table.addEventFilter(MouseEvent.MOUSE_PRESSED, (event) -> {
if(event.isShortcutDown() || event.isShiftDown())
event.consume();
});
这段代码:
设置
<selectionModeProperty
将TableView
的选择模型更改为SelectionMode.MULTIPLE
,使TableView
能够选择多行。设置
cellSelectionEnabledProperty
将TableView
的选择模型设置为true
以使TableView
能够选择单元格而不是行将监听器附加到
focusedCellProperty
focus model的TableView
的监听器打印当前所选单元格的TableColumn
并选择所选列中的所有单元格如果按下修饰键以禁用例如 Shift + Click 选择,则使用
TableView
上的鼠标事件
关于JavaFX 表格 View : Select the whole TableColumn and get the index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38012247/