在Java中复制到剪贴板
我想在Java控制台应用程序中将用户剪贴板设置为string。 有任何想法吗?
使用工具包 获取系统剪贴板 。
使用该string创build一个StringSelection并将其添加到剪贴板。
简化:
StringSelection selection = new StringSelection(theString); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selection, selection);
这是一个简单的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); } }
如果你在Linux上使用OpenJDK,它将无法正常工作。 您必须在Linux上使用Sun JDK才能正常工作。
在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); }
这项工作就像一个冠军;
String get= text.getText(); StringSelection selec= new StringSelection(get); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selec, selec);