Java NetBeans GUI密钥事件发送

Java NetBeans GUI密钥事件发送,java,netbeans,Java,Netbeans,我正在做一个简单的计算器,到目前为止,我做了一个文本字段,我可以在其中键入数字,它会监听是否从键盘键入了键 private void resultKeyTyped(java.awt.event.KeyEvent evt) { } 我想要的是用鼠标点击,比如说“1”,然后向这个方法发送一个键事件,就像我在键盘上点击一样。试着用机器人按键盘,但上面写着“虚空类型在这里不好”之类的话。我想用鼠标单击侦听器运行resultKeyTyped方法,如下所示: private void jButton1M

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

private void resultKeyTyped(java.awt.event.KeyEvent evt) {  }
我想要的是用鼠标点击,比如说“1”,然后向这个方法发送一个键事件,就像我在键盘上点击一样。试着用机器人按键盘,但上面写着“虚空类型在这里不好”之类的话。我想用鼠标单击侦听器运行resultKeyTyped方法,如下所示:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) 
{
    resultKeyTyped(KeyEvent.VK_1);
} 
在我看来,最好的方法是(假设你点击的是一个按钮而不是其他东西)如下:

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()

希望这有帮助


另外,如果你真的想要一个keyevent,你可以使用keyevent构造函数,但是因为你使用的是机器人,我很确定你只关心这个键,要调用
resultKeyTyped
,你必须传递一个。您可以使用适当的构造函数创建KeyEvent:

KeyEvent event = new KeyEvent(textField, 0, System.currentTimeMillis(), 0, KeyEvent.VK_1);
resultKeyTypes(event);
尽管根据您的描述(例如
简单计算器
),听起来您可能希望选择不同的方法:

  • ActionListener
    添加到
    JButton
  • ActionListener
    的实现中,使用
    setText
    方法更改
    JTextField
    文本

  • 如果按键是从键盘输入的,它会监听
    为什么需要监听按键事件?如果你想听听JTXTEXT文本改变的时候,考虑一下使用A你刚才做的基本上我所说的,唯一不同的是你使用的是MySististor。您应该只制作一个按钮/jbutton并添加一个ACTIONlistener。@copeg,他正在获取键盘输入,但他也希望按钮可以单击,就像windows calculator@Mrab Ezreb一样,JTextField已经可以处理键盘输入,而不需要键盘侦听器-因此我的问题是。