Когда мое приложение на основе 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 Terminal, Mozilla Thunderbird и Firefox и многих других программах этого сделать нельзя. Опция «Вставить» выделена серым цветом, как будто буфер обмена пуст.
Как я могу заставить свою Java-программу публиковать обычный текст в системный буфер обмена в Linux (тестирование на Ubuntu 12.04), чтобы все программы могли получить к нему доступ?