Я хочу настроить буфер обмена пользователей на строку в приложении консоли Java. Любые идеи?
Ответ 1
Используйте Toolkit для получить системный буфер обмена.
Создайте StringSelection с помощью строки и добавьте ее в буфер обмена.
Упрощенный:
StringSelection selection = new StringSelection(theString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
Ответ 2
Вот простой SSCCE, чтобы выполнить это:
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
class ClipboardTest
{
public static void main(String[] args)
throws UnsupportedFlavorException, IOException
{
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection testData;
// Add some test data
if (args.length > 0)
testData = new StringSelection( args[0] );
else
testData = new StringSelection( "Test Data" );
c.setContents(testData, testData);
// Get clipboard contents, as a String
Transferable t = c.getContents( null );
if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
{
Object o = t.getTransferData( DataFlavor.stringFlavor );
String data = (String)t.getTransferData( DataFlavor.stringFlavor );
System.out.println( "Clipboard contents: " + data );
}
System.exit(0);
}
}
Ответ 3
Если вы используете Linux и используете OpenJDK, это не сработает. Вы должны использовать Sun JDK для Linux для работы.
Ответ 4
в linux с xclip
Runtime run = Runtime.getRuntime();
Process p = null;
String str = "hello";
try {
p = run.exec(new String[]{"sh", "-c", "echo " + str + " | xclip -selection clipboard"});
} catch (Exception e) {
System.out.println(e);
}
Ответ 5
Эта работа как чемпион;
String get= text.getText();
StringSelection selec= new StringSelection(get);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selec, selec);