1

在 GXT 中,MessageBox方法是异步的,这意味着在显示消息框时应用程序不会“锁定”。

我使用 aKeyListener来处理表单中的输入键(以提高可用性,即允许通过输入键提交表单),然后在应用程序处理用户凭据时禁用表单字段。如果它们不正确,我会显示 aMessageBox.alert()然后重新启用表单字段。但是,由于alert()立即返回,因此表单字段立即再次可用,允许用户在不关闭警报的情况下输入数据。

alert()解决方案是在;中使用回调。然而,回车键不仅会导致表单提交,还会导致警报立即关闭(好像表单和消息框都在处理回车键)。如何在用户第二次按下输入或单击“确定”按钮之前保持警报框打开?

4

1 回答 1

2

密钥DeferredCommandGWT提供:

此类允许您在所有当前挂起的事件处理程序完成后使用addCommand(Command)oraddCommand(IncrementalCommand)方法执行代码。当您需要在当前堆栈的上下文之外执行代码时,这很有用。

if(!validate())
{
    DeferredCommand.addCommand(new Command() {
        public void execute() {
            MessageBox.alert("Error", "You must enter a username and password.", alertListener);
            return;
        }
    });
}
于 2009-03-27T22:27:06.797 回答