0

GWT 2.2版のCell Tableを使用しています。クリックしたヘッダー列の名前を取得したい。同じクリックイベントは発生しませんでした。

私の仕事を達成するための回避策はありますか?

4

1 に答える 1

0

このようなもの?;)

public class CellTableExample implements EntryPoint, ClickHandler {

    private static class SomeEntity {
        /* ... */
    }


    private static class ClickableTextHeader extends TextHeader {

        private ClickHandler handler;

        public ClickableTextHeader(String text, ClickHandler handler) {
            super(text);
            this.handler = handler;
        }

        @Override
        public void onBrowserEvent(Context context, final Element elem,
                final NativeEvent event) {

            //maybe hijack click event
            if(handler != null) {

                if(Event.ONCLICK == Event.getTypeInt(event.getType())) {

                    handler.onClick(new ClickEvent() {
                        {
                            setNativeEvent(event);
                            setRelativeElement(elem);
                            setSource(ClickableTextHeader.this);
                        }
                    });
                }
            }

            //default dom event handler 
            super.onBrowserEvent(context, elem, event);
        }
    }

    CellTable<SomeEntity> cellTable;
    TextColumn<SomeEntity> firstColumn;
    TextColumn<SomeEntity> secondColumn;
    TextColumn<SomeEntity> thirdColumn;

    @Override
    public void onModuleLoad() {

        /* somehow init columns - it's not the point for this example */

        cellTable.addColumn(firstColumn, new ClickableTextHeader("First column header", this));
        cellTable.addColumn(secondColumn, new ClickableTextHeader("Second column header", this));
        cellTable.addColumn(thirdColumn, new ClickableTextHeader("Third column header", this));
    }

    @Override
    public void onClick(ClickEvent event) {
        ClickableTextHeader source = (ClickableTextHeader) event.getSource();
        Window.alert(source.getValue());
    }
}

「単純なリスナー インターフェイス」を使用すれば、イベントのハイジャックはより簡単に見えるかもしれません。

于 2012-04-17T00:41:29.737 に答える