如何检测JavaFX TableView中选择了哪一列?

问题描述 投票:0回答:2

如何检测当用户单击某个单元格时选择了哪一列(名称或 ID 等)?

javafx tableview
2个回答
5
投票

要选择单个单元格而不是整行,请调用

tableView.getSelectionModel().setCellSelectionEnabled(true);

要跟踪选择了哪些单元格,您可以这样做

final ObservableList<TablePosition> selectedCells = table.getSelectionModel().getSelectedCells();
selectedCells.addListener(new ListChangeListener<TablePosition>() {
    @Override
    public void onChanged(Change change) {
        for (TablePosition pos : selectedCells) {
            System.out.println("Cell selected in row "+pos.getRow()+" and column "+pos.getTableColumn().getText());
        }
    });
});

0
投票

我一直在尝试应用这种类型的处理,尽管是在 Kotlin 中。我很确定编程语言(Java 与 Kotlin)在这种情况下应该不重要。

不幸的是,上面建议的方法似乎不再有效,因为我收到了一条错误消息“ 2 type argument Expected for class TablePosition

这是我尝试过的代码:

val listChangeListener = ListChangeListener<TablePosition>()
    {  fun onChanged(c: ListChangeListener<TablePosition>)
        {   println("Selection changed: ")
        }
    }


    this.getSelectionModel().setCellSelectionEnabled(true);
    var selectedCells = selectionModel.getSelectedCells();
    selectedCells.addListener(listChangeListener)

我在其他地方找到了此问题的参考 - 为什么在声明类型参数时将 JavaFXML TablePosition 实例视为原始类型?

菲尔特洛伊

© www.soinside.com 2019 - 2024. All rights reserved.