【问题标题】:How to simulate Keyboard press in java如何在java中模拟键盘按下
【发布时间】:2012-08-31 20:22:40
【问题描述】:

我想模拟在 JTextField 中输入一个字符串(可以包含任何字符)。我正在为此使用 new KeyEventData() 。但我无法确定如何处理 {、}、) 等字符,以及如何将新字符附加到已输入的字符。

【问题讨论】:

    标签: java swing jtextfield awtrobot


    【解决方案1】:

    您可以为此使用Robot,如example 所示。例如,要获取{,您需要执行以下操作:

    keyPress(KeyEvent.VK_SHIFT);
    keyPress(KeyEvent.VK_OPEN_BRACKET);
    keyRelease(KeyEvent.VK_OPEN_BRACKET);
    keyRelease(KeyEvent.VK_SHIFT);
    

    【讨论】:

    • 所以对于每个字符,我需要检查它的值,并据此决定是否使用 shift。
    • 是的,KeyEvent 实例是低级别事件。
    • 当我将上述代码用于 VK_PLUS 时,我得到无效键码异常
    • 在我的键盘上,VK_PLUS 没有移位,而 shift-VK_EQUALS 产生一个加号。
    【解决方案2】:

    这可能有助于模拟关键事件:How to simulate keyboard presses in java?

    对于左右大括号,KeyEvent.VK_BRACELEFT 和 KeyEvent.VK_BRACERIGHT http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html#VK_BRACELEFT

    希望这会有所帮助 =]

    【讨论】:

    • @cskoala:我无法确定在运行时按哪个键以及如何将键字符附加到已键入的字符串。
    • 抱歉,您到底想做什么?我以为你只是想模拟输入一个字符串?您是在运行时等待用户输入,还是在代码中输入要按下的键?
    • 我从字符串中获取输入。然后我想模拟要在 JTextField 中输入的值。
    • 哦,好吧,那么您不能逐个字符地解析字符串,然后对每个可能的字符都有一个 switch 语句并以这种方式模拟按键吗?
    • 你认为这对你有用吗?如果是这样并且您感到困惑,我可以提供一个小样本。
    【解决方案3】:

    检查 VK_BRACELEFT、VK_BRACERIGHT、VK_RIGHT_PARENTHESIS 和 VK_LEFT_PARENTHESIS 以处理这些字符。

    对于附加字符,您可能会假设构建字符列表或构建字符串。

    编辑:要从 keyevent 中获取字符值,请尝试 KeyEvent.getKeyChar()

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2017-07-07
      相关资源
      最近更新 更多