当前位置: 首页 > 知识库问答 >
问题:

允许用户从TableView复制数据

翟宾实
2023-03-14

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

我使用的是标准的javafx.Scene.Control.TableView类。是否有一种简单的方法来启用单元格复制?我做了一些搜索,我看到其他人创建自定义菜单命令...我不想创建一个自定义菜单,我只想要基本的键盘复制与单细胞工作。

我使用的是单一选择模式,但如果需要,我可以更改为其他模式:

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

共有1个答案

钱飞翼
2023-03-14

您只需在场景中创建一个监听器,类似于:

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处下载。

 类似资料:
  • 好吧,我有一个函数(不完全是下面写的那个,那个只是一个例子) 现在的问题是,人们可以进入控制台,只需键入“test()”并调用函数。 有没有办法防止这种情况?我不想让很多人从控制台调用函数。

  • 嗨,我正在制作自定义拨号器,因此我创建了自己的输入板。 问题是我如何禁用EditText但仍然允许剪切/复制/粘贴?股票拨号器可以做到这一点。 我已经尝试了,但它禁用了剪切/复制(虽然仍然可以粘贴)。 我还尝试通过编程禁用,这将禁用所有三个命令: 从清单中禁用它也不起作用: 有解决办法吗?谢谢

  • 我将JSON对象存储在Amazon S3中,我想从Javascript直接从S3加载数据。我的GET看起来很普通: 我得到以下错误: 我可以使用curl从S3获取URL,或者直接从浏览器导航到S3。我真的要通过自己的服务器代理所有这些请求吗?

  • 问题内容: 我似乎无法使实例正常工作。我使用的代码如下: 子类 该代码输出 问题答案: 您需要覆盖。而不是这样做,您实现了一个带有signature 的方法。因此,您使用的是为相等性测试定义的默认方法。 默认实现基于对象标识,因此,该集合“允许”您添加两个在语义上相等的不同对象。

  • 我需要把允许起源在我的Jersery项目。m得到错误:-访问控制-允许-起源-问题在角-2我应该把需要。

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您