example datatransfer java string clipboard awt

datatransfer - Copia al portapapeles en Java



java awt datatransfer clipboard (6)

Aquí hay un SSCCE simple para lograr esto:

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); } }

Quiero configurar el portapapeles del usuario en una cadena en una aplicación de consola Java. ¿Algunas ideas?


En Linux con 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); }


Este trabajo como un campeón;

String get = text.getText(); StringSelection selec = new StringSelection(get); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selec, selec);


Para cualquiera que todavía encuentre esta publicación buscando la forma de JavaFX para lograr esto, aquí tiene:

ClipboardContent content = new ClipboardContent(); content.putString("Some text"); content.putHtml("<b>Bold</b> text"); Clipboard.getSystemClipboard().setContent(content);

Para más información, lea la documentación .


Si está en Linux y usa OpenJDK, no funcionará. Debe usar Sun JDK en Linux para que funcione.


Use el Toolkit para obtener el portapapeles del sistema . Cree una StringSelection con la String y agréguela al Clipboard .

Simplificado:

StringSelection selection = new StringSelection(theString); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selection, selection);