Can';t在tableview JavaFx的同一行中选择不同的单元格

Can';t在tableview JavaFx的同一行中选择不同的单元格,javafx,Javafx,我有一个TableView,在这里我需要启用任何单元格的选择(一次一个)。现在,我使用以下代码: tableView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observableValue, Object oldValue, Object ne

我有一个TableView,在这里我需要启用任何单元格的选择(一次一个)。现在,我使用以下代码:

        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();
    }
});
observeListSelectedCells=table.getSelectionModel().getSelectedCells();

selectedCells.addListener((ListChangeListener.Change)您能否澄清:您想要单个单元格选择(而不是默认行选择)?您是否使用
tableView.getSelectionModel().setCellSelectionEnabled(true);
?您希望同时选择多个单元格,还是只选择一个单元格?我使用的是单独的行选择,如果我总是单击其他行中的某个位置,它就会起作用。.setCellSelectionEnabled(true);已设置。我希望一次只选择一个单元格。如果您有
。setCellSelectionEnabled(true)
那么您实际使用的是单元格选择,而不是行选择…是的,我可以选择行,抱歉,我的意思是我无法获取它们的值。编辑问题。当我连续单击同一行中的不同单元格时,它们被选中,但changeListener未被触发,我无法获取值。感谢您的回答我如何获取值电子牢房能撑多久?