【发布时间】:2012-03-22 12:25:55
【问题描述】:
我一直在尝试使用来自 awt 的 Robot,在应用程序上输入一些文本。问题是我不能让它输入任何字母,如ê、à或á。
例如,我尝试过这样的打印 ^e,但即使这样也行,它只是不会为 VK_CIRCUMFLEX 打印任何东西
不确定是否重要,但我正在 Mac 上进行测试。
任何帮助都会很好。
【问题讨论】:
-
尝试了该帖子的所有答案,但都没有解决我的问题......但感谢评论。谢谢
我一直在尝试使用来自 awt 的 Robot,在应用程序上输入一些文本。问题是我不能让它输入任何字母,如ê、à或á。
例如,我尝试过这样的打印 ^e,但即使这样也行,它只是不会为 VK_CIRCUMFLEX 打印任何东西
不确定是否重要,但我正在 Mac 上进行测试。
任何帮助都会很好。
【问题讨论】:
您可以将剪贴板与 CTRL/COMMAND+V 结合使用来为您完成这项工作。下面的代码至少可以在 Windows 上运行(Mac 键组合可能需要不同的顺序来进行粘贴)。
public static void main(String[] args) throws AWTException {
String osName = System.getProperty("os.name");
boolean isOSX = osName.startsWith("Mac OS X");
boolean isWin = osName.startsWith("Windows");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection str = new StringSelection("Héllõ Wörld");
clipboard.setContents(str, str);
Robot robot = new Robot();
if (isMac) {
// ⌘-V on Mac
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_META);
} else if (isWin) {
// Ctrl-V on Win
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
} else {
throw new AssertionError("Not tested on "+osName);
}
}
【讨论】: