UiBinderでVerticalPanelの複数のClickEventを処理する方法は?

event-handling events gwt uibinder
UiBinderでVerticalPanelの複数のClickEventを処理する方法は?

次の* .ui.xmlファイルを想定します。

次のように3つのラベルすべてにClickHandlersを追加したい場合:

@UiHandler("Label1")
void handleClick(ClickEvent event) {
    //do stuff
}
@UiHandler("Label2")
void handleClick(ClickEvent event) {
    //do stuff
}
@UiHandler("Label3")
void handleClick(ClickEvent event) {
    //do stuff
}

同じ名前のメソッドが3つあるため、エラーが発生します。 カスタムウィジェットを作成し、それらをVerticalPanelに追加する以外に、これを回避する方法はありますか?

  5  2


ベストアンサー

複数のウィジェットに1つの注釈を使用するオプションもあります

@UiHandler(value={"clearButton_1", "clearButton_2"})
void handleClickForLabel1(ClickEvent event) {
     //do stuff
}

28


異なる名前を付けてください。 GETが処理するイベントの種類を認識するのに役立つ重要な部分は「クリックイベント」ですが、メソッド名は重要ではありません。

@UiHandler("Label1")
void handleClickForLabel1(ClickEvent event) {
    //do stuff
}

@UiHandler("Label2")
void handleClickForLabel2(ClickEvent event) {
    //do stuff
}

@UiHandler("Label3")
void whoaSomeoneClickedLabel3(ClickEvent event) {
    //do stuff
}

13


私はこの状況に出くわし、event.getSource()がソースオブジェクトのインスタンスではなく、その名前を与えることを発見しました。 ソースオブジェクトを識別するために、キャストしてタイトルを取得する必要がありました。 私の場合、MaterialImageを使用し、UiBinderでタイトルを設定しています。

例:UiBinderコード

Javaで

Object object = event.getSource();
if (object instanceof MaterialImage) {
    MaterialImage image = (MaterialImage) object;
    String type = image.getTitle();
    if (type.equals("simpleLine")) {
        ...
    }

もっと良い方法があればいいのにと思っていますが、それだけで作業できます。

0


タイトルとURLをコピーしました