JavaFX 表格 View : Select the whole TableColumn and get the index

标签 java javafx tableview tablecolumn

假设我们有一个包含 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();
});

这段代码:

  • 设置selectionModePropertyTableView 的选择模型更改为 SelectionMode.MULTIPLE,使 TableView 能够选择多行。

    <
  • 设置cellSelectionEnabledPropertyTableView 的选择模型设置为 true 以使 TableView 能够选择单元格而不是行

  • 将监听器附加到 focusedCellProperty focus modelTableView 的监听器打印当前所选单元格的 TableColumn 并选择所选列中的所有单元格

  • 如果按下修饰键以禁用例如 Shift + Click 选择,则使用 TableView 上的鼠标事件

关于JavaFX 表格 View : Select the whole TableColumn and get the index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38012247/

相关文章:

java - 如何测试maven/m2e插件在eclipse中是否配置正确?

java - ZipEntry.getTime() 不可预测的结果

java - HIbernate 一对一注释不会在从属表中生成外键 GerericGenerator

java - 如何在 JavaFX 中使用来自另一个 Controller 的变量

JavaFX-获取 cellFactory() 的整个行项目?

JavaFX如何从Tableview中获取选定行的数据

Java 流 : filtering with 2 objects

java - Kotlin FXML 文件 Controller

java - 如何在鼠标拖动时在舞台上设置事件?

ios - 为什么不能在 didSelectRowAtIndexPath 方法中关闭 View Controller