gxt keylistener.componentKeydown ()은 즉시 MessageBox.Alert ()를 닫습니다.
-
22-08-2019 - |
문제
GXT에서 MessageBox
메소드는 비동기식이므로 메시지 상자가 표시되는 동안 응용 프로그램이 "잠겨"지 않음을 의미합니다.
나는 a를 사용한다 KeyListener
Enter 키 프레스를 양식으로 처리하려면 (유용성을 높이기 위해, 즉 Enter 키에 의해 양식을 제출할 수있게 함) 응용 프로그램은 사용자의 자격 증명을 처리하는 동안 양식 필드를 비활성화합니다. 그들이 틀렸다면, 나는 a를 보여준다 MessageBox.alert()
그런 다음 양식 필드를 다시 활성화합니다. 그러나 그 이후로 alert()
즉시 반환하면 양식 필드가 즉시 다시 제공되므로 사용자가 경고를 닫지 않고 데이터를 입력 할 수 있습니다.
해결책은 콜백을 사용하는 것입니다 alert()
; 그러나 Enter Keypress는 양식을 제출하게 할뿐만 아니라 Alert가 즉시 해고됩니다 (양식과 메시지 상자가 Enter 키를 처리하는 것처럼). 사용자가 두 번째로 입력하거나 "OK"버튼을 클릭 할 때까지 경고 상자를 열어두면 어떻게해야합니까?
해결책
열쇠는 DeferredCommand
에 의해 제공 GWT:
이 클래스는 현재 보류중인 이벤트 핸들러가 완료된 후에 코드를 실행할 수 있습니다.
addCommand(Command)
또는addCommand(IncrementalCommand)
행동 양식. 이것은 현재 스택의 컨텍스트 외부에서 코드를 실행해야 할 때 유용합니다.
if(!validate())
{
DeferredCommand.addCommand(new Command() {
public void execute() {
MessageBox.alert("Error", "You must enter a username and password.", alertListener);
return;
}
});
}
제휴하지 않습니다 StackOverflow