0

GWTコンポジットに「完了」ボタンを配置する必要がありました(すでに閉じるアイコンがありますが)。クリックするとウィンドウが閉じるだけです。残念ながら、.close()それを実装する方法が見つかりません。どのようにそれを行うことができますか?

ここに画像の説明を入力してください

UserCompositeという名前のCompositeコンポーネントを含むUserDialogクラスがあります。UserDialogはCustomDialogBoxに拡張され、CustomDialogBoxはDialogBoxクラスに拡張されます。

public class UserDialog extends CustomDialogBox {    
    private UserComposite c = new UserComposite();
    // more codes here
    private FlowPanel getFlowPanel() {
        if (p instanceof Panel && c instanceof Composite) {
            p.setSize(WIDTH, HEIGHT);
            p.add(c);
        }
        return p;
    } 
}

そしてこれが私のUserCompositeです

public class UserComposite extends Composite {
   // codes here
   @UiHandler("doneButton")
   void onDoneButtonClick(ClickEvent event) {
      this.removeFromParent();
   }
}

removeFromParent()を試しましたが、UserCompositeが親から削除されただけで、DialogBoxが空になりました。

ここに画像の説明を入力してください

4

2 に答える 2

4

@氏。Xymon、ウィンドウによって、PopupPanelのインスタンスまたはPopupPanelの任意のサブクラスのインスタンスを意味する場合は、次を使用できます。

popupPanel.hide();
于 2012-09-29T08:03:14.857 に答える
4

コンポジットではなく、ダイアログを非表示にする必要があります。これを行う 1 つの方法は、ダイアログ ボックスへの参照を UserComposite コンストラクターに渡し、その参照を使用してダイアログで hide() を呼び出すことです。それは次のようなものかもしれません:

public class UserDialog extends CustomDialogBox {
    private UserComposite c = new UserComposite(this);
    ...
}

public class UserComposite extends Composite {
    private DialogBox parentDialog;

    public UserComposite(DialogBox parentDialog) {
        this.parentDialog = parentDialog;
    }

    @UiHandler("doneButton")
    void onDoneButtonClick(ClickEvent event) {
        parentDialog.hide();
    }
}
于 2012-09-29T16:50:12.597 に答える