使用Java将文本复制到剪贴板
我想从JTable
的单元格复制文本到剪贴板,使其可以粘贴到其他程序,如Microsoft Word。 我有来自JTable
的文本,但我不确定如何将其复制到剪贴板。
这对我很有用,而且很简单:
导入这些:
import java.awt.datatransfer.*; import java.awt.Toolkit;
然后把这段代码放在任何你想改变剪贴板的地方:
String myString = "This text will be copied into clipboard when running this code!"; StringSelection stringSelection = new StringSelection(myString); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null);
我刚刚尝试过,它的工作原理。 不知道是否有一些“良好做法”的缺陷,但它会解决你的问题!
LH
下面的类允许您从剪贴板复制/粘贴string。
import java.awt.AWTException; import java.awt.HeadlessException; import java.awt.Robot; 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.awt.event.KeyEvent; import java.io.IOException; public class SystemClipboard { public static void copy(String text) { Clipboard clipboard = getSystemClipboard(); clipboard.setContents(new StringSelection(text), null); } public static void paste() throws AWTException { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_V); } public static String get() throws Exception { Clipboard systemClipboard = getSystemClipboard(); DataFlavor dataFlavor = DataFlavor.stringFlavor; if (systemClipboard.isDataFlavorAvailable(dataFlavor)) { Object text = systemClipboard.getData(dataFlavor); return (String) text; } return null; } private static Clipboard getSystemClipboard() { Toolkit defaultToolkit = Toolkit.getDefaultToolkit(); Clipboard systemClipboard = defaultToolkit.getSystemClipboard(); return systemClipboard; } }
这是用装饰的方式写的接受的答案
Toolkit.getDefaultToolkit() .getSystemClipboard() .setContents( new StringSelection(txtMySQLScript.getText()), null );