JavaFX TableView:Select 整个 TableColumn 并获取索引
JavaFX TableView: Select the whole TableColumn and get the index
假设我们有一个包含 3 列(A、B、C)的简单 Tableview。每个 Column 包含一些目前不重要的数据。
我想知道是否可以只选择整个列(无论用户在列中的何处单击)并检索用户选择的该列的 ID and/or 索引?
例如,用户点击 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();
});
这个片段:
将TableView
的select离子模型的selectionModeProperty
设置为SelectionMode.MULTIPLE
以使TableView
能够select不止一行。
将 TableView
的 select 离子模型的 cellSelectionEnabledProperty
设置为 true
以使 TableView
能够select 个单元格而不是行
将侦听器附加到 TableView
的 focusedCellProperty
of the focus model,该侦听器打印当前 selected 单元格的 TableColumn
和 selects selected 列中的所有单元格
消耗 TableView
上的鼠标事件,如果按下修改键以禁用例如 Shift + Click selection
假设我们有一个包含 3 列(A、B、C)的简单 Tableview。每个 Column 包含一些目前不重要的数据。
我想知道是否可以只选择整个列(无论用户在列中的何处单击)并检索用户选择的该列的 ID and/or 索引?
例如,用户点击 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();
});
这个片段:
将
TableView
的select离子模型的selectionModeProperty
设置为SelectionMode.MULTIPLE
以使TableView
能够select不止一行。将
TableView
的 select 离子模型的cellSelectionEnabledProperty
设置为true
以使TableView
能够select 个单元格而不是行将侦听器附加到
TableView
的focusedCellProperty
of the focus model,该侦听器打印当前 selected 单元格的TableColumn
和 selects selected 列中的所有单元格消耗
TableView
上的鼠标事件,如果按下修改键以禁用例如 Shift + Click selection