문제

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;
        }
    });
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top