以下来自独立应用程序的代码在 ubuntu 中工作:
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
public class ClipboardTest {
public static void main(String[] args) throws Exception {
Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
// print the last copied thing
System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
StringSelection data = new StringSelection("NOW");
clipBoard.setContents(data, data);
// prints NOW
System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
}
}
将 (Ctrl+V) 粘贴到不同的应用程序中不会产生任何结果;我期待“现在”。再次调用上述代码会出现以下异常:
Exception in thread "main" java.awt.datatransfer.UnsupportedFlavorException: Unicode String
at sun.awt.datatransfer.ClipboardTransferable.getTransferData(ClipboardTransferable.java:160)
作为一个独立的应用程序,即使在2011 年安全更改之后,它也应该可以工作。通过 Ctrl+C 从 JTextField 内部复制,然后粘贴到其他地方。
使用最新的 java7 (jdk1.7.0_10) 和 jdk1.6.0_33 在 ubuntu 11.04 上均未成功;它应该可以在带有最新 java7 的 windows 7 和带有 java6_37 的 mac osx 10.6 上按预期工作。还用这些java尝试了xubuntu 12.04,但它在那里不起作用。这是一个 linux/ubuntu 错误吗?