Как мне запустить действие, когда пользователь покидает JTextBox?

StackOverflow https://stackoverflow.com/questions/1522970

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть JTextField , и я бы хотел, чтобы система выполняла некоторую обработку того, что вводил пользователь, всякий раз, когда пользователь покидает текстовое поле.Однако ActionListener, который вы можете добавить только к JTextField, срабатывает только тогда, когда пользователь нажимает enter.

Я бы хотел, чтобы процедура обработки запускалась всякий раз, когда пользователь покидает текстовое поле любым способом - вкладками, щелкает по нему, нажимает enter и т.д.(Обработка, о которой идет речь, заключается в сохранении текста, введенного пользователем, в соответствующем объекте данных, ничего особенного.)

Мой google-fu потерпел неудачу в этом вопросе:Я уверен, что это возможно, я просто не вижу, как это сделать.

Это было полезно?

Решение

Добавить FocusListener.

Стоит отметить, что это слушатель относительно низкого уровня.Вкл . JComboBox это не сработает, пока вы не найдете текстовое поле (и, возможно, кнопку), которое вставляет конкретный PL & F.Swing немного странный в этом смысле (среди многих других способов).

Хотя, за мои деньги, некосетические изменения, которые происходят, когда фокус покидает поле, ухудшают пользовательский опыт.Гораздо лучше вносить любые соответствующие изменения при каждом изменении с помощью прослушивателя в документе текстового поля.

Другие советы

Если вы хотите отредактировать текст по мере его ввода, вам следует использовать DocumentFilter.

Если вы хотите проверить текст как целостный объект, вы можете использовать InputVerifier.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top