我正在使用net beans(Java)构建一个Gui,我的问题是如何在不按 Enter 键的情况下将文本字段中的字符串转换为变量? 我写了这段代码:
private void idTextBoxActionPerformed(java.awt.event.ActionEvent evt) {
this.Id = evt.getActionCommand();
}
问题在于,如果我只输入文本并移动到下一个文本字段,则数据不会进入Id变量,如果我按 Enter 一切正常。
答案 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