2

我想在对话框显示之前将焦点设置到org.gwtbootstrap3.client.ui.Input对话框 ( ) 中的某个字段 ( ) 。org.gwtbootstrap3.client.ui.Modal如果您有一个带有单个字段的对话框,例如Upload textAdd feed dialogs right here ,则该用例似乎很常见。但是我不知道如何将焦点设置到这个特定的gwtbootstrap3组件。

Input组件确实有一个setFocus(true)方法。我认为在显示对话框之前设置焦点不起作用,但事实并非如此。所以合乎逻辑的解决方案是将方法调用放在一个ScheduledCommand. 像这样:

Scheduler.get().scheduleDeferred(new ScheduledCommand() {

    @Override
    public void execute() {
        textField.setFocus(true);
    }

});

这通常适用于 GWT 标准组件,但在这种情况下似乎没有帮助。我找到了一种在对话框通过ModalShowHandler. 像这样:

modal.addShowHandler(new ModalShowHandler() {

    @Override
    public void onShow(ModalShowEvent evt) {
        textField.setFocus(true);
    }

});

我什至尝试将两者结合起来,向句柄添加延迟调用。没运气。有任何想法吗?

4

1 回答 1

2

你应该在听ModalShownEvent(注:Shown,不是Show)。

ModalShowEvent当请求(例如,以编程方式)显示模式时触发。

ModalShownEvent当模态实际显示时触发。

这个有点混乱的命名是基于原生Bootstrap Modal 事件的事件:show.bs.modalshown.bs.modal.

ModalShownEvent结合通常Scheduler#scheduleDeferred应该做的伎俩。

于 2015-05-01T22:50:29.977 回答