Javafx 允许用户从TableView复制数据

Javafx 允许用户从TableView复制数据,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,我有一个简单的JavaFX应用程序,允许用户查询数据库并查看表中的数据 我想让用户能够单击一个表格单元格,并使用标准的剪贴板按键笔划将文本从该单元格复制到剪贴板:ctrl-c代表Win/Linux或cmd-c代表Mac。仅供参考,默认情况下,文本输入控件支持基本复制/粘贴 我使用的是标准的javafx.scene.control.TableView类。是否有一种简单的方法来启用单元格复制?我做了一些搜索,我看到其他人创建自定义菜单命令。。。我不想创建自定义菜单,我只想让基本键盘拷贝与单个单元格一

我有一个简单的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);
TableView TableView=newtableview();
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);
    }
});

关于完整的示例,您可以从下载。

我建议您查看这篇文章,为我工作

作者使用一个传统的util java类从tableView启用单元格内容复制

See:并尝试将该方法与自定义表格单元格工厂相结合。