Java 将单词从双击复制到剪贴板
我试图从任何地方复制单词(比如MS word、pdf,而不是从任何java组件),当我双击它时,将其复制到剪贴板上。因此,我使用Java 将单词从双击复制到剪贴板,java,awt,clipboard,awtrobot,Java,Awt,Clipboard,Awtrobot,我试图从任何地方复制单词(比如MS word、pdf,而不是从任何java组件),当我双击它时,将其复制到剪贴板上。因此,我使用awt.Robot在双击后将所选单词复制到剪贴板上。复制后,单词将返回。因此,我使用两种方法copy\u From\u Original和copy\u From\u ClipBoard 问题是,当我复制word时,它会显示上一个word的剪贴板内容,而不是当前复制的内容 如果有其他方法可以完成这个过程,请随意说出来 谢谢。对不起,我的英语不好 public class
awt.Robot
在双击后将所选单词复制到剪贴板上。复制后,单词将返回。因此,我使用两种方法copy\u From\u Original
和copy\u From\u ClipBoard
问题是,当我复制word时,它会显示上一个word的剪贴板内容,而不是当前复制的内容
如果有其他方法可以完成这个过程,请随意说出来
谢谢。对不起,我的英语不好
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;
}
} }
不要为此使用机器人。您还没有说明什么类型的组件包含双击文本,但是如果它是JTextField或JTextArea或JTextComponent的任何其他子类,您可以简单地调用 如果是AWT文本字段或文本区域,您可以自己使用将所选内容放置在剪贴板上:
String text = textField.getSelectedText();
Clipboard clipboard = textField.getToolkit().getSystemClipboard();
clipboard.setContents(new StringSelection(text), null);
谢谢你的回答。所选文本不属于任何组件。它来自另一个地方。像word之类的。这就是为什么我使用机器人,这是一个挑战。Java不能真正监视或控制其他应用程序中的活动,这很糟糕。我不需要选择一个单词,只需要复制一个选定的单词。为此,无需控制或监视其他应用程序。只需发送windows普通复制信号并将其抓取到剪贴板。就这么多。机器人会这样做。剪贴板不会因为你的机器人执行Ctrl-C而立即更改。至少,你应该使用Ctrl-C包装任何后续读取的剪贴板内容。您可能还需要延迟读取,但不幸的是,任何延迟都是试探性的和任意的,因此不完全可靠。是的,您是对的,谢谢您的帮助。我使用线程。睡眠(500);现在它起作用了。