【发布时间】:2013-04-21 12:41:34
【问题描述】:
当我基于 Java 的应用程序(不是基于浏览器的小程序)将纯文本复制到 Linux 上的系统剪贴板时,许多程序无法访问剪贴板数据,但有些程序可以。
这是我能做的最简单的测试:
import java.awt.datatransfer.*;
import java.awt.Toolkit;
import java.io.*;
public final class PasteTest {
public static void main (String... args) {
String mytext = "This is a test message, testing, 1, 2, 3....";
StringSelection sel = new StringSelection(mytext);
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
clip.setContents(sel, null);
try {
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
当该程序运行时,OpenOffice (LibreOffice 3.5.7.2) 中的文件 > 粘贴能够访问它放置在系统剪贴板上的文本。但是在 Gnome 终端、Mozilla Thunderbird 和 Firefox 以及许多其他程序中使用文件 > 粘贴是不行的。粘贴选项是灰色的,就像剪贴板是空的一样。
如何让我的 Java 程序将纯文本发布到 Linux 上的系统剪贴板(在 Ubuntu 12.04 上测试),以便所有程序都可以访问它?
【问题讨论】:
-
Mozilla、gedit 或终端中的鼠标中键有什么作用?通常它从不同的 X 剪贴板粘贴。也许你的数据在那里?
-
它不会转到 X11 选择“剪贴板”。示例代码演示了问题。
-
您使用的是 OpenJDK 还是 Sun 的 JDK?我注意到粘贴到终端的基于 Java 的程序存在问题,我发现将 JDK 作为可能的解决方案here。