无法选择表视图 JavaFx 同一行中的不同单元格



我有一个表格视图,我需要在其中启用任何单元格的选择(一次一个)。现在,我使用以下代码:

        tableView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
        @Override
        public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
            if(tableView.getSelectionModel().getSelectedItem() != null)
            {
                TableView.TableViewSelectionModel selectionModel = tableView.getSelectionModel();
                ObservableList selectedCells = selectionModel.getSelectedCells();
                TablePosition tablePosition = (TablePosition) selectedCells.get(0);
                String val = (String)tablePosition.getTableColumn().getCellData(newValue);
                System.out.println("Selected Value: " + val);
                selectionTextField.appendText(val);
            }
        }
    });

问题是,我无法获取同一行中不同单元格的值。我认为这是因为它是同一行,没有触发选择侦听器。我尝试了clearSelection(),但后来我得到了越界异常,我在某处读到我无法在同一侦听器中更改表模型。有什么提示吗?

谢谢。

如果使用单元格选择而不是行选择(换句话说,如果您调用了tableView.getSelectionMode().setCellSelectionEnabled(true);),则应观察所选单元格的列表而不是 selectedItem 属性。selectedItem属性仅指示所选的行,因此仅当您选择新行时,该属性才会更改。

ObservableList<TablePosition> selectedCells = table.getSelectionModel().getSelectedCells() ;
selectedCells.addListener((ListChangeListener.Change<? extends TablePosition> change) -> {
    if (selectedCells.size() > 0) {
        TablePosition selectedCell = selectedCells.get(0);
        TableColumn column = selectedCell.getTableColumn();
        int rowIndex = selectedCell.getRow();
        Object data = column.getCellObservableValue(rowIndex).getValue();
    }
});

相关内容

最新更新