【问题标题】:Abstracting Java Robot Function抽象 Java 机器人功能
【发布时间】:2014-01-23 12:11:06
【问题描述】:

我正在玩 Java Robot 函数。

但是,由于我认为这是背后的主要痛苦,所以我想知道我是否可以抽象该功能并创建一种更快的方法。

现在我首先做了以下事情:

public abstract class Cyborg {

    public static void Cyborg(KeyEvent args[]) throws AWTException{
        try {
            Robot robot = new Robot(); 
            for(KeyEvent k:args){
                robot.keyPress(KeyEvent.k); 
            }
        } catch(AWTException e){
            e.printStackTrace();
        }
    }
}

我目前有点困惑,我目前收到一个无法解决 k 的错误。但是在KeyEvent args[] 部分中,这应该被归类为 KeyEvent 还是应该只是一个字符串?因为我来自 PHP 背景,所以我开始接触 java。谁能建议这是否是解决此问题的最佳方法?还有为什么KeyEvent.k 无法解析它是KeyEvent 还是String?关于这是否可行/不可行或尝试避免的问题的任何其他建议都会很棒。

谢谢

【问题讨论】:

    标签: java keyevent awtrobot


    【解决方案1】:
    robot.keyPress(KeyEvent.k); 
    

    这行不通,因为这将尝试查找名为 kKeyEvent 类的 static member。您已将增量对象命名为 k,因此请使用 k

    robot.keyPress(k.getKeyCode());
    

    更详尽的解释

    当您说出以下内容时:

     String[] strs = {"hello", "there", "my", "friend"};
    
     for(String str : strs)
     {
         // Do something.
     }
    

    您让计算机执行的操作与以下效果相同:

     for(int x = 0; x < strs.length; x++)
     {
         String str = strs[x];
     }
    

    因此,您定义了一个名为 strString 对象,该对象将包含 strs 数组中包含的当前 String 对象。

    【讨论】:

    • 是的,我有,但将其设置为 k 是键的整数变体,而不是实际的键值
    • 不,k 是一个 KeyEvent 对象。 - 道歉。编辑使其更清晰。
    • 它指出“类型机器人中的方法keyPress不适用于参数(KeyEvent)”
    • 你的权利已经成功了。现在有没有你能想到的可以阻止它工作的信息?除此之外,参数一次必须是一个字符,所以 char[] 会更适合,对吧?
    • 我不确定你的意思?是否有任何情况可能导致此失败?当然,但这就是为什么你有一个try-catch
    【解决方案2】:

    这一行

    robot.keyPress(KeyEvent.k); 
    

    应该是这样的

    robot.keyPress(k.getKeyCode());
    

    【讨论】:

    • 是的,我有,但将其设置为 k 是键的整数变体,而不是实际的键值
    猜你喜欢
    • 2016-12-05
    • 2019-09-11
    • 2022-12-18
    • 2015-03-13
    • 2022-08-19
    • 2013-11-25
    • 2019-11-15
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多