5

私はGxtで働いています。ページの最初の有効なフィールドにフォーカスを設定する必要があります。しかし、私は多くのページを持っているので、その動作を一元化したいと考えています。Gxt にはドキュメントが不足しているので、誰かがそのような問題に遭遇して助けてくれるのではないかと思います。

今では、各コンポーネントのクラスでそのようになります

protected void resetFocus() {
    combobox.focus();
}

@Override
public void show() {
    super.show();
    resetFocus();
}

com.extjs.gxt.ui.client.aria.FocusManagerを見つけましたが、それをどのように使用できるかはまったく不明です。あるいは、フォーカスに応じてコンポーネントに移動するときに、フィールドのチェーンを取得することも可能です。そして、 resetFocusメソッドを親クラスに移動できます。

そのようなもの

protected void resetFocus() {
    *getFocusChain().get(0).focus();*
}
4

2 に答える 2

3

最後の応答に基づいて、次のようにして GXT3 ウィンドウでこれを機能させました。

@Override
public void show() {
    super.show();
    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
        @Override
        public void execute() {
            field.focus();
        }
    });
}

このようにして、ウィンドウが開くと、フィールドにフォーカスがあり、入力を開始できます。

于 2013-01-17T17:51:42.030 に答える
2

レンダリング後にフォーカスする 遅延があるため、Scheduler.get().scheduleDeferredメソッドを使用する必要があります。またはDeferredCommand、GWT 1.7 以前で。

使用例:

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

    @Override
    public void execute() {
        widget.focus();
        widget.el().focus();
        widget.getElement().focus();
    }
});
于 2010-11-23T12:12:30.760 に答える