我一直在尝试从awt使用机器人,在应用程序上输入一些文本。问题是我无法输入任何字母,例如ê,à或á。 我已经尝试过这样的打印^ e例如,但即使这样做,它只是没有打印任何东西VK_CIRCUMFLEX
口音与机器人按键
不知道它是否重要,但我在Mac上测试。
任何帮助都会好起来的。
我一直在尝试从awt使用机器人,在应用程序上输入一些文本。问题是我无法输入任何字母,例如ê,à或á。 我已经尝试过这样的打印^ 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);
}
}
不错,工作。但我不确定它是否解决了我的问题。我想我必须发送每个字符的按键来解决我的问题。 – 2012-03-22 03:23:00
,我需要更改为VK_META而不是VK_CONTROL才能在mac上工作。您可以将其添加到您的答案 – 2012-03-22 03:25:27
已更新。我还没有在我的Mac上进行测试,但现在应该更接近了。如果您需要每个角色的按键事件,那么您可能能够避免在每次点击⌘-V时使用新角色更新剪贴板内容。 – 2012-03-22 04:30:29
代替千言万语http://stackoverflow.com/questions/397113/how-to-make-the-java-awt-robot-type-unicode-characters-is-it-possible – mishadoff 2012-03-22 00:30:32
试过所有该帖子的答案没有解决我的问题...但赞赏评论。谢谢 – 2012-03-22 01:41:50