如何输入数据到swing.JTextField而不按Enter键?

Avi*_*Avi 2 java swing

我正在使用net beans(Java)构建一个Gui,我的问题是如何在不按键的情况下将文本字段中的字符串转换为变量Enter?我写了这段代码:

private void idTextBoxActionPerformed(java.awt.event.ActionEvent evt)   {                                          

   this.Id  =  evt.getActionCommand();
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我只输入文本并移动到下一个文本字段,如果我按下Enter所有内容,则数据不会进入Id变量.

got*_*ers 5

按Enter键ActionEvent将从您在actionPerformed方法中侦听的文本字段中调用,这就是您的代码仅在该方案中有效的原因.

您可以使用FocusListener来实现您想要的效果.您将需要监听focusLost事件,即当您离开文本字段时.

class foo implements FocusListener {
    JTextField textField = new JTextField("A TextField");
    textField.addFocusListener(this);

    public void focusGained(FocusEvent e) {
       // Do whatever you want
    }

    public void focusLost(FocusEvent e) {
       // Save the text in the field to your id variable
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

以下教程介绍了如何使用格式化文本字段.您可以忽略格式位并专注于propertyChangeListner它的方面.这个想法与我的第一个例子相同,但使用了不同类型的监听器.