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

时间:2011-08-15 09:11:29

标签: java swing

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

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

   this.Id  =  evt.getActionCommand();
}

问题在于,如果我只输入文本并移动到下一个文本字段,则数据不会进入Id变量,如果我按 Enter 一切正常。

2 个答案:

答案 0 :(得分: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
    }
}

修改

以下教程显示how to use a formatted textfield。您可以忽略格式位并专注于propertyChangeListner方面。 这个想法与我的第一个例子相同,但是使用了不同类型的监听器。

答案 1 :(得分:2)

您可以使用操作事件或焦点事件来跟踪组件级别的更改。但如果您感兴趣的文本发生了变化,那么您应该考虑使用DocumentListener。阅读教程here