Нажатие 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
}
}
РЕДАКТИРОВАТЬ
В следующем руководстве показано , как использовать отформатированныйTextField .Вы можете игнорировать бит форматирования и сосредоточиться на его аспекте propertyChangeListner
.Идея та же, что и в моем первом примере, но с использованием другого типа слушателя.