Следующий код из автономного приложения работает в 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, а затем вставка в другое место работает.
Неудачно на ubuntu 11.04 с последними java7 (jdk1.7.0_10) и jdk1.6.0_33; Он должен работать и работает как ожидается на Windows 7 с последним java7 и на mac osx 10.6 с java6_37. Также судимый xubuntu 12.04 с этими javas и там не работает. Это ошибка linux/ubuntu?