GXT KeyListener.componentKeyDown() 立即关闭 MessageBox.alert()
-
22-08-2019 - |
题
在GXT中, MessageBox
方法是异步的,这意味着应用程序在显示消息框时不会“锁定”。
我用的是 KeyListener
处理表单中的回车键(以提高可用性,即允许通过回车键提交表单),然后在应用程序处理用户的凭据时禁用表单字段。如果它们不正确,我会显示一个 MessageBox.alert()
然后重新启用表单字段。然而,自从 alert()
立即返回,表单字段立即再次可用,允许用户输入数据而无需关闭警报。
解决方案是使用回调 alert()
;但是,按 Enter 按键不仅会导致表单提交,还会导致警报立即消失(就好像表单和消息框都在处理 Enter 键一样)。如何保持警报框打开,直到用户再次按 Enter 键或单击“确定”按钮?
解决方案
关键是 DeferredCommand
由...提供 总吨位:
此类允许您在所有当前挂起的事件处理程序完成后执行代码,使用
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