如果 shell 被释放,Windows 剪贴板中 SWT 剪贴板数据不可用

3
在我们的项目中,我正在开发一个简单的函数,可以将数据复制到剪贴板,然后在其他地方使用。这很简单。模态窗口弹出并在SWT.List中显示所有由该函数导出的文件列表。此窗口还有两个按钮:“确定”和“复制到剪贴板”。 OK按钮通过shell.dispose()(我甚至尝试了Shell.close())关闭窗口。剪贴板功能看起来像这样:
Clipboard clipboard = new Clipboard(Display.getDefault());
TextTransfer transfer = TextTransfer.getInstance();
String lines = "";
for (String line : list.getItems())
{
    lines += line;
    lines +="\n";
}
clipboard.setContents(new Object[] { lines }, new TextTransfer[] { transfer });

文件导出完成后,按钮会被激活。复制到剪贴板和使用数据是有效的,但只有当我点击此按钮并首先将此数据粘贴到任何位置时才有效。如果我现在点击“确定”并关闭窗口,则数据仍然在剪贴板中。

但是,如果我点击“复制”按钮,然后直接点击“确定”,而不将此数据粘贴到任何位置,则该数据将从剪贴板中丢失。

是否有任何方法可以无论如何保留剪贴板中的数据?

1个回答

3
也许您需要在设置内容后直接处理剪贴板?也就是说,当您不再需要使用剪贴板实例时,请按照Clipboard类javadoc中的文档进行处理。不确定是否有帮助,但您可以尝试一下...另请参阅http://www.vogella.com/blog/2009/09/04/swt-clipboard/

非常感谢。它起作用了。我已经开始使用AWT剪贴板,但会重新考虑。 - Romczyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接