java-如果处置了外壳,Windows剪贴板中的SWT剪贴板数据将不可用

在我们的项目中,我正在开发一个简单的功能,该功能将可能将数据复制到剪贴板,然后在其他任何地方使用它.
这很简单.弹出一个模态窗口并在SWT中显示.列出该函数导出的所有文件的列表.该窗口还有两个按钮:“确定”和“ “复制到剪贴板”. “确定”按钮通过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 });

文件导出完成后,将激活按钮.复制到剪贴板并使用数据是可行的,但是仅当我单击此按钮并首先将数据粘贴到任何地方时才可以.如果现在单击“确定”并关闭窗口,则数据仍在剪贴板中.
但是,如果我单击“复制”按钮,然后直接“确定”而不将数据粘贴到任何地方,则数据将从剪贴板中丢失.

反正有什么办法可以将数据保存在剪贴板中?

解决方法:

设置内容后,您可能需要直接丢弃剪贴板吗?也就是说,当您不再需要使用Clipboard实例时,请按Clipboard类javadoc中的说明进行处理.不确定是否有帮助,但是您可以尝试…另请参见http://www.vogella.com/blog/2009/09/04/swt-clipboard/

上一篇:移动端 点击 复制到剪贴版


下一篇:clipboard 在 vue 项目中,on 事件监听回调多次执行