在 RCP 中清除系统剪贴板

Clear system Clipboard in RCP

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

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

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

}

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

只有当要清除的数据属于您希望清除所述内容的剪贴板时,才可以清除剪贴板。根据相应的官方 JavaDoc,如果不是这种情况(例如,因为其他一些应用程序将其放在那里),则什么也不做。简而言之,如果你没有放在那里,你可能不会清除它。

也许尝试先设置(=覆盖)剪贴板的内容,然后再清除它,这样您更有可能拥有这些内容(但要注意有关剪贴板工具获取所有权的警告,如上述 JavaDoc 中所述) .