当我双击它时,我试图从任何地方(如MS word,pdf,而不是从任何java组件)复制单词到剪贴板。因此,我使用awt.Robot
将所选单词复制到剪贴板后双击它。复制后,该词将返回。因此,我使用了两种方法copy_From_Original
和copy_From_ClipBoard
。
问题是当我复制单词时,它会显示前一个单词,即剪贴板内容不是当前复制的单词。
如果有,另一种方法可以自由地说出来。
感谢。抱歉我的英语不好。
public class copyWord {
public static String copy_From_Original() {
try {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
} catch (AWTException ex) {
Logger.getLogger(copyWord.class.getName()).log(Level.SEVERE, null, ex);
}
String word = copy_From_ClipBoard();
return word;
}
private static String copy_From_ClipBoard() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
try {
String result = (String) clipboard.getData(DataFlavor.stringFlavor);
return result;
} catch (Exception e) {
System.out.println("ERROR");
return null;
}
} }
答案 0 :(得分:1)
请勿使用Robot。您还没有说过哪种类型的组件包含双击文本,但如果它是JTextField或JTextArea或JTextComponent的任何其他子类,您只需调用copy()。
如果它是AWT TextField或TextArea,您可以使用自己在剪贴板上的选择:
String text = textField.getSelectedText();
Clipboard clipboard = textField.getToolkit().getSystemClipboard();
clipboard.setContents(new StringSelection(text), null);