SWT:具有复制/粘贴功能的表

发布于 2024-12-05 20:25:24 字数 522 浏览 0 评论 0原文

这可能是一个非常愚蠢的问题,但我在任何地方都找不到答案,有没有办法让用户能够突出显示 SWT 表中的行以及 ctrl+c 或右键单击+c 复制值?

我特别希望能够复制到 Excel 工作表中。

这就是我创建表的方式,

Table aTable = new Table(parent, SWT.SINGLE | SWT.BORDER
                | SWT.FULL_SELECTION);
aTable.setHeaderVisible(true);
aTable.setLinesVisible(true);

aTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

我已经看到有关使用 JTable 的信息,但没有看到有关 SWT 的信息。如果 JTable 是我唯一的选择,那么使用其中任何一个的缺点/优点是什么?

This maybe a really silly question but I just could not find the answer anywhere, is there any way for the user to be able to highlight rows in an SWT Table and either ctrl+c or right-click+c to copy the values?

I would specifically like to be able to copy into an excel sheet.

This is how I create the table,

Table aTable = new Table(parent, SWT.SINGLE | SWT.BORDER
                | SWT.FULL_SELECTION);
aTable.setHeaderVisible(true);
aTable.setLinesVisible(true);

aTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

I have seen information about this using a JTable but nothing with an SWT. If JTable is my only option, then what would be the dis/advantages of using either?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南七夏 2024-12-12 20:25:24

您可以轻松地对其进行编码。

在表中添加一个按键侦听器并侦听 Ctrl+C 键。当按下 Ctrl+C 时,从表中获取选择,从每个 TableItem 中提取文本并形成制表符分隔字段/换行符分隔行字符串包含您的数据。然后将其放入剪贴板(请参阅 org.eclipse.swt.dnd.Clipboard#setContents,使用 TextTransfer 数据类型)。

就是这样 - 您的结果将可以粘贴到 Excel 中。

You can easily code it.

Add a key listener to your table and listen for Ctrl+C keys. When Ctrl+C is hit, get the selection from the table, extract text from each of the TableItems and form a tab-separated-fields/newline-separated-rows String containing your data. Then just put it into clipboard (see org.eclipse.swt.dnd.Clipboard#setContents, use TextTransfer data type).

That is it - your result will be pasteable into Excel.

云雾 2024-12-12 20:25:24

接受的答案很好,但由于开发人员更喜欢代码片段而不是文本,我会这样回答问题:

aTable.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.stateMask == SWT.CTRL && (e.keyCode == 'c' || e.keyCode == 'C')) {
            Clipboard clipboard = new Clipboard(Display.getDefault());
            clipboard.setContents(new Object[] { getTextFromSelectedRows() }, new Transfer[] { TextTransfer.getInstance() });
            clipboard.dispose();
        }
    }
});

然后只需实现一个 getTextFromSelectedRows() - 方法 - 基于表选择 - 返回 < code>String 应该添加到剪贴板。

The accepted answer is good, but since developers prefer code snippets over text I'd answer the question this way:

aTable.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.stateMask == SWT.CTRL && (e.keyCode == 'c' || e.keyCode == 'C')) {
            Clipboard clipboard = new Clipboard(Display.getDefault());
            clipboard.setContents(new Object[] { getTextFromSelectedRows() }, new Transfer[] { TextTransfer.getInstance() });
            clipboard.dispose();
        }
    }
});

Then just implement a getTextFromSelectedRows()-Method that - based on the table selection - returns the String that should be added to the clipboard.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文