【问题标题】:How to programmatically simulate arrow key presses in Java FX如何以编程方式模拟 Java FX 中的箭头键按下
【发布时间】:2014-06-17 08:22:59
【问题描述】:

我想让我的 JFX 应用程序模拟箭头键按下(当它们在 TextField 中注册时),但我不知道如何发送字符串或字节以外的任何内容。

我在想象这样的事情:

static EventHandler<KeyEvent> KEY() {
    E = new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent ke) {
            if (ke.getCode().equals(KeyCode.UP)) {
                try {
                    //someObject.SimulateKeyPress(KeyCode.UP);

                    //OR

                    //coolObject.SendKey((char)KEY_UPKEY));
                } catch (Exception ex) {
                    //Teleport goats
                }
            }
        }
    };

    return E;
}

【问题讨论】:

    标签: java javafx keypress


    【解决方案1】:

    使用类Robot

     try {
        Robot r = new Robot();
        //there are other methods such as positioning mouse and mouseclicks etc.
        r.keyPress(java.awt.event.KeyEvent.VK_UP);
        r.keyRelease(java.awt.event.KeyEvent.VK_UP);
     } catch (AWTException e) {
        //Teleport penguins  
     }
    

    【讨论】:

    • 这模拟了当前关注的应用程序中的按键,不一定与 javafx 或 jvm 进程有关。
    【解决方案2】:

    您不能实例化类型 Robot。 你应该这样做:

      Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot();
    

    【讨论】:

    • 还要注意,从 Java 9 开始,com.sun API 可能对使用 JDK 的应用程序程序员不可见。
    • 我不知道你从哪里得到的,但你绝对可以实例化Robot:docs.oracle.com/javase/8/docs/api/java/awt/Robot.html#Robot--
    • Lion 指的是另一个机器人 Michael。也许在这种情况下,awt 机器人是玻璃机器人的替代品 Lion(我对机器人的了解还不够,无法肯定地说)。
    • “他们”如何在不提供替代方案的情况下决定删除对 FXRobot 的访问权限?!?!?!?我不明白这种公然无视?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2020-11-09
    • 1970-01-01
    • 2016-10-07
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多