清除RCP中的系统剪贴板

时间:2015-08-12 12:44:44

标签: java swt eclipse-rcp clipboard

我在RCP应用程序中使用剪贴板来实现各种功能。 我已经编写了一些单元测试来测试这些函数的功能。它们非常简单,因为它们只能将一些数据复制并粘贴到剪贴板中。 问题是,这些测试偶尔会失败。我认为这是因为系统剪贴板中还有一些数据导致我的测试失败。

所以我尝试编写一个方法来在执行测试之前清除系统剪贴板的所有内容:

 protected void clearClipboard() {
    Display display = Display.getCurrent();
    Clipboard clipboard = new Clipboard(display);
    clipboard.clearContents();
    clipboard.dispose();

}

但显然这并没有改变任何事情而且测试仍然失败。 这是清除系统剪贴板的正确方法吗?

1 个答案:

答案 0 :(得分:3)

只有当您要清除所述内容的剪贴板拥有要清除的数据时,才能清除剪贴板。如果不是这种情况(例如,因为其他一些应用程序将其放在那里),根据相应的官方JavaDoc,没有做任何事情。简而言之,如果你没有把它放在那里,你可能无法清除它。

也许首先尝试设置(=覆盖)剪贴板的内容并在之后将其清除,因此您更有可能拥有内容(但要注意有关Clipboard工具获取所有权的警告,如上所述的JavaDoc)。