0
  • 新しいCellTableを作成します。
  • onBrowserEvent2をオーバーライドして、マウスイベントを処理します。
  • テーブルに新しい要素を追加します。

残念ながら、イベントリスナーは追加された要素を処理していません。それは最初の要素にのみ取り組んでいます。

table = new CellTable<Contact>() {

    public void onBrowserEvent2(Event event) {
    Element tr = Element.as(event.getEventTarget());

    boolean gotIt = false;
    while (!gotIt && tr != null) {
        if (!tr.getTagName().equals("TR")) {
        tr = tr.getParentElement();
        continue;
        }
        gotIt = true;
    }

    if (tr == null)
        return;

    tr = Element.as(tr.getChild(1));

    Element out = DOM.createDiv();
    out.setInnerHTML("<a href='xxx'>Edit contact</a> | <a href='xxx'>Add visit plan</a> | <a href='xxx'>New visit</a>");

    switch (DOM.eventGetType(event)) {
    case Event.ONMOUSEOVER:
       tr.appendChild(out);
        break;
    case Event.ONMOUSEOUT:
       tr.getChild(1).removeFromParent();
        break;
    }
    }
};
4

1 に答える 1

0

問題がなければ、すべてのハンドラーを個別に宣言することができます。

次のように、いつでもマウスハンドラーを直接追加できます。

//MouseOverHandlerを表すコード。これをあらゆるタイプのGWTイベントハンドラーに使用します

            CellTable<String> cellTable = new CellTable<String>();

            cellTable.addDomHandler(new MouseOverHandler() {

                @Override
                public void onMouseOver(MouseOverEvent event) {
                    // Your logic
                }
            }, MouseOverEvent.getType());

それは役立つはずです

于 2012-08-09T15:10:32.997 に答える