代码之家  ›  专栏  ›  技术社区  ›  Melad Basilius

Javafx如何使用Javafx使TableColumn单元格可选择但不可编辑

  •  0
  • Melad Basilius  · 技术社区  · 7 年前

    我正在尝试使用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 回复  |  直到 7 年前
        1
  •  1
  •   fabian    7 年前

    没有默认的复制机制 TableView (列可以包含仲裁值类型,在复制到剪贴板时可能需要costom处理)。如果需要,您应该自己实现复制机制。

    例子:

    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);
    

    它假设您正在使用标准单元格类型。