首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Robot类型设为`:`?

如何将Robot类型设为`:`?
EN

Stack Overflow用户
提问于 2011-04-21 04:18:27
回答 8查看 14.8K关注 0票数 9

我想使用Java Robot输入:。然而,我得到了一个IllegalArgumentException。我的代码是:

代码语言:javascript
运行
复制
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_SHIFT);

例外情况是:

代码语言:javascript
运行
复制
java.lang.IllegalArgumentException: Invalid key code.].

我还尝试了:

代码语言:javascript
运行
复制
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);

我该如何解决这个问题?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-04-21 04:23:32

尝试使用以下代码:

代码语言:javascript
运行
复制
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);

和键盘一样,当你按下shift +;时,你会输入:。和你需要模拟的一样。

试着运行这段代码,只是为了尝试一下上面的答案:

代码语言:javascript
运行
复制
public class Test {
    public static void main(String[] args) {
        Robot robot;
        try {
            robot = new Robot();
            robot.keyPress(KeyEvent.VK_SHIFT);  
            robot.keyPress(KeyEvent.VK_SEMICOLON);  
            robot.keyRelease(KeyEvent.VK_SEMICOLON);  
            robot.keyRelease(KeyEvent.VK_SHIFT);
        } catch (AWTException e) {
            // TODO Auto-generated catch bloc
            e.printStackTrace();
        }


    }
}
票数 17
EN

Stack Overflow用户

发布于 2011-04-21 05:18:36

不幸的是,Java Robot类依赖于一个名为java.awt.peer.RobotPeer的未记录接口的特定于平台的实现。特定于平台的实现决定了哪些按键事件是合法的或非法的。

在我的windows XP机器上,这个功能运行得很好:

代码语言:javascript
运行
复制
public static void main(final String[] args) throws InterruptedException, IOException {
    Robot robot;
    try {
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SHIFT);
    } catch (final AWTException e) {
        // TODO Auto-generated catch bloc
        e.printStackTrace();
    }
}

在不同的平台上,您可能希望尝试:

代码语言:javascript
运行
复制
public static void main(final String[] args) throws InterruptedException, IOException {
    Robot robot;
    try {
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_COLON);
        robot.keyRelease(KeyEvent.VK_COLON);
    } catch (final AWTException e) {
        // TODO Auto-generated catch bloc
        e.printStackTrace();
    }
}
票数 4
EN

Stack Overflow用户

发布于 2014-06-16 21:29:25

试试这个代码;),也许它会有帮助(使用ascii代码alt+5+8=:):

代码语言:javascript
运行
复制
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_ALT);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD5);
robot9.keyRelease(KeyEvent.VK_NUMPAD5);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD8);
robot9.keyRelease(KeyEvent.VK_NUMPAD8);
robot9.delay(20);
robot9.keyRelease(KeyEvent.VK_ALT);
robot9.delay(20);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5736129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档