Java NetBeans GUI Key事件发送

时间:2015-05-14 17:17:56

标签: java netbeans

我正在制作一个简单的计算器,到目前为止,我做了一个文本字段,我可以在其中输入数字,如果键是从键盘输入的话,它会监听。

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) 
{
    resultKeyTyped(KeyEvent.VK_1);
} 

我想要的是点击让我们说' 1'用鼠标向这个方法发送一个键事件,就好像我在键盘上点击它一样。尝试用机器人做按键,但它说'无效类型在这里不好用''或类似的东西。我想用鼠标点击监听器运行resultKeyTyped方法,如下所示:

amazon.com

2 个答案:

答案 0 :(得分:0)

在我看来,最好的方法(假设你点击一个Button而不是其他东西)将是这样的:

Button button1 = new Button("1");
button1.addActionListener(new ActionListener() {
    int thisKey = KeyEvent.VK_1;
    @Override
    public void actionPerformed(ActionEvent e) {
        resultKeyTyped(thisKey);
    }
});

现在,您需要更改的一件事是resultKeyTyped需要将int作为参数而不是keyevent。根据我的理解,你所关心的只是按下了哪个键,而不是按下了多长时间或类似的东西。因此,无论您何处调用resultKeyTyped,都将其传递给KeyEvent.getKey()

希望这有帮助!

P.S。如果你真的想要一个keyevent,你可以使用keyevent构造函数,但是因为你还在使用机器人,我很确定你只关心密钥

答案 1 :(得分:0)

要拨打resultKeyTyped,您必须传递KeyEvent。您可以使用适当的构造函数创建KeyEvent:

KeyEvent event = new KeyEvent(textField, 0, System.currentTimeMillis(), 0, KeyEvent.VK_1);
resultKeyTypes(event);

虽然根据您的描述(例如simple calculator),听起来您可能希望选择不同的方法:

  1. ActionListener添加到JButton
  2. ActionListener的实施过程中,使用JTextField方法更改setText文字