javafx - 允许用户从 TableView 复制数据

标签 javafx javafx-2 javafx-8

我有一个简单的 JavaFX 应用程序,它允许用户查询数据库并查看表中的数据。

我想让用户能够单击表格单元格并使用标准剪贴板击键将文本从该单元格复制到剪贴板: ctrl-c 用于 Win/Linux 或 cmd-c 用于 Mac。仅供引用,文本输入控件默认支持基本复制/粘贴。

我正在使用标准的 javafx.scene.control.TableView 类。有没有一种简单的方法来启用单元格复制?我做了一些搜索,我看到其他人创建了自定义菜单命令...我不想创建自定义菜单,我只想使用基本的键盘副本来处理单个单元格。

我正在使用单选模式,但如果需要,我可以更改为其他内容:

    TableView<Document> tableView = new TableView<Document>();
    tableView.getSelectionModel().setCellSelectionEnabled(true);
    tableView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

最佳答案

您只需要在场景中创建一个监听器,例如:

scene.getAccelerators()
.put(new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY), new Runnable() {
    @Override
    public void run() {
        int row = table.getSelectionModel().getSelectedIndex();
        DataRow tmp = table.getItems().get(row);
        final Clipboard clipboard = Clipboard.getSystemClipboard();
        final ClipboardContent content = new ClipboardContent();
        if(table.getSelectionModel().isSelected(row, numColumn)){
            System.out.println(tmp.getNumSlices());
            content.putString(tmp.getNumSlices().toString());
        }
        else{
            System.out.println(tmp.getSelected());
            content.putString(tmp.getSelected());
        }
        clipboard.setContent(content);
    }
});

有关完整示例,您可以在 gist 下载它。 .

关于javafx - 允许用户从 TableView 复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170119/

相关文章:

JavaFX CheckBoxTreeItem 检测何时选中或取消选中复选框

java - 某些元素的监听器

JavaFX 8 FXML TextField(可能是其他变量)始终为 null

javafx - 如何在放置在不同 Pane /区域的两个节点之间绘制线

java - 是否可以创建使用 Spring Jdbc 和 Mysql 的独立 JavaFx 应用程序

combobox - javafx-2,仅在回车键上设置可编辑的组合框值

java - 如何重用 JavaFX GUI?我可以动态更改 Controller 吗?

java - 使用一个 Controller 播放/暂停多个 MediaView JavaFX FXML

javafx 的东西,我不能做出好的标题

java - 如何在 JavaFX 中正确连接 SQLite 与文本字段和标签?