Java:将机器人模拟的按键限制在应用程序本身

时间:2015-05-21 09:06:02

标签: java jframe awt keyevent

大家好日子,

我想知道如何将所有机器人模拟按键和鼠标移动限制在应用程序本身。我目前正在开展一个小项目,为谷歌音乐创建一个音乐播放器。

我可以在执行机器人代码之前使窗口具有焦点,但是这会导致系统托盘中的音乐播放器产生太多的麻烦,而且它会将游戏窗口设置为全屏幕。

private void Play(){
        try {                           
            Robot robot = new Robot();
            robot.keyPress(32);
            robot.keyRelease(32);   
        } catch (AWTException e) {          
            e.printStackTrace();
        }
    }

这是当前要播放/暂停的机器人代码。它目前正在模拟被按下的空格键。

部分解决方案

frame.dispatchEvent(new KeyEvent(Component, KeyEvent.KEY_TYPED, 0, 0, KeyEvent.VK_UNDEFINED, char Action)); // Component you want the key press to go

1 个答案:

答案 0 :(得分:0)

直接将键事件发送到文本组件。框架不需要关注这一点。

text.dispatchEvent(new KeyEvent(text,
                                KeyEvent.KEY_TYPED, 
                                0,
                                0,
                                KeyEvent.VK_UNDEFINED, 
                                'H'));

如果您想从EDT执行此操作,请使用invokeLater进行设置:

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        text.dispatchEvent(new KeyEvent(text,
                                KeyEvent.KEY_TYPED, 
                                0,
                                0,
                                KeyEvent.VK_UNDEFINED, 
                                'H'));
    }
});