如果处置shell,则SWT剪贴板数据在Windows剪贴板中不可用

时间:2012-06-14 16:56:53

标签: java swt clipboard

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

答案 0 :(得分:3)

也许您需要在设置内容后直接丢弃剪贴板?也就是说,当您不再需要使用Clipboard实例时,请将其丢弃,如Clipboard类javadoc中所述。不确定它会有所帮助,但您可以尝试...另请参阅http://www.vogella.com/blog/2009/09/04/swt-clipboard/