Javafx Как сделать ячейки TableColumn выбираемыми, но не редактируемыми с помощью Javafx - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать таблицу, используя Javafx, мне нужно, чтобы некоторые столбцы ячеек были доступны для выбора, но не редактировались,

если я использовал: textColumn.setEditable(true); но это сделает его редактируемым

если я использовал: textColumn.setEditable(false);, он не будет ни выбираемым, ни редактируемым

как я могу сделать столбец выбираемым, но не редактируемым?

Вот мой пример кода

    TableColumn<Tuple, String> textColumn= new TableColumn<>();
    textColumn.setText(column.getName());
    textColumn.setMinWidth(column.getWidth());
    textColumn.setEditable(true);

1 Ответ

0 голосов
/ 30 октября 2018

Не существует механизма копирования по умолчанию для TableView (столбцы могут содержать произвольные типы значений, которые могут потребовать затратной обработки при копировании в буфер обмена). При необходимости вы должны самостоятельно реализовать механизм копирования.

Пример:

tableView.setOnKeyReleased(evt -> {
    if (evt.isControlDown() && evt.getCode() == KeyCode.C) {
        List<TablePosition> selectedCells = table.getSelectionModel().getSelectedCells();
        if (!selectedCells.isEmpty()) {
            TablePosition selectedCell = selectedCells.get(0);
            if (selectedCell.getTableColumn() == textColumn) {
                String value = textColumn.getCellData(selectedCell.getRow());
                Clipboard clipboard = Clipboard.getSystemClipboard();
                ClipboardContent content = new ClipboardContent();
                content.putString(value);
                clipboard.setContent(content);
            }
        }
    }
});

Это нужно сделать в дополнение к

tableView.getSelectionModel().setCellSelectionEnabled(true);

Предполагается, что вы используете стандартный тип ячейки.

...