双击将单词复制到剪贴板

时间:2017-04-20 18:04:13

标签: java awt clipboard awtrobot

当我双击它时,我试图从任何地方(如MS word,pdf,而不是从任何java组件)复制单词到剪贴板。因此,我使用awt.Robot将所选单词复制到剪贴板后双击它。复制后,该词将返回。因此,我使用了两种方法copy_From_Originalcopy_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;
    }
} }

1 个答案:

答案 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);