В GXT MessageBox
методы являются асинхронными, что означает, что приложение не «блокируется», пока отображается окно сообщения.
Я использовал KeyListener
для обработки нажатий клавиш ввода в форме (чтобы повысить удобство использования, т. Е. Разрешить отправку формы ключом ввода) и впоследствии отключил поля формы, пока приложение обрабатывает учетные данные пользователя. Если они неверны, я показываю MessageBox.alert()
, а затем снова включаю поля формы. Однако, поскольку alert()
возвращается немедленно, поля формы немедленно становятся снова доступными, что позволяет пользователю вводить данные, не закрывая предупреждение.
Решение заключается в использовании обратного вызова в alert()
; однако нажатие клавиши ввода не только приводит к отправке формы, но и к немедленному прекращению оповещения (как если бы форма и окно сообщения обрабатывали клавишу ввода). Как сохранить окно оповещения открытым, пока пользователь не нажмет кнопку ввода второй раз или не нажмет кнопку «ОК»?