0

somePanel に onClick イベントがあります。そして、それをクリックすると機能します。しかし..実際のクリックターゲットを取得するには? somePanel 内にあるパネルをクリックすると、somePanel をクリックしたことが示されます。

私たちはこれを持っていることを知っています:

Element e = Element.as( event.getNativeEvent().getEventTarget());

しかし、要素を返します-ウィジェットが必要です..

これを行う方法?

4

3 に答える 3

4

これは古い質問ですが、どちらの答えも間違っています。GWT EventListener を使用していて、イベントのソースであるウィジェットが必要な場合は、単純にevent.getSource()イベントのメソッドを使用して元のオブジェクト タイプにキャストします。

ここでの質問に欠けているものがない限り。

于 2014-03-27T21:16:05.727 に答える
1

チェックしたいすべてのウィジェットがすでにわかっている場合の別のアプローチは、DOM.isOrHasChild(Element) または Element.isOrHasChild(Node) を使用することです。

例えば:

public void onClick(ClickEvent event) {

    Element targetElem = Element.as(event.getNativeEvent().getEventTarget());

    Widget targetWidget = null;

    if (widgetA.getElement().isOrHasChild(targetElem) {
        targetWidget = widgetA;
    }
    else if (widgetB.getElement().isOrHasChild(targetElem) {
        targetWidget = widgetA;
    }
    .....

    if (targetWidget != null) {
        // You found you widget - Yay!
    }
    else {
        // No widget found - Bummer!
    }

}

このアプローチは、テスト対象のウィジェットが事前にわかっている場合にのみ機能します。利点は、追加のチェックを行う必要がある可能性のある「一部の」ウィジェットへの一般的な参照ではなく、特定のウィジェット参照があることです。

たとえば、widgetA が MySpecialTextBox という TextBox のサブクラスである場合、次のようにすることができます。

MySpecialTextBox widgetA;

if (widgetA.getElement().isOrHasChild(targetElem) {
    widgetA.someSpecialMethod();
}
于 2013-07-26T20:49:01.180 に答える