【问题标题】:how to add column of ClickableTextCells to cellTable如何将 ClickableTextCells 的列添加到 cellTable
【发布时间】:2011-03-21 23:17:12
【问题描述】:

大家好 我需要一个简单的例子,告诉我如何将 ClickableTextCells 列添加到 cellTable

谢谢。

【问题讨论】:

  • 嗨艾哈迈德。请将问题恢复为原始形式并将解决方案作为答案发布。如果您对 stackoverflow 仍有疑问,请阅读 stackoverflow.com/faq。谢谢。
  • 完成...感谢您的评论
  • 不客气。如果可以,您也应该“接受”自己的答案。

标签: gwt gwt-2.2-celltable gwt-2.2


【解决方案1】:
Column<YerValueObject, String> newCol = new Column<YerValueObject, String>(new  ClickableTextCell()) {
    @Override
    public String getValue(YearValueObject obj) {
        return obj.someMethod();
    }

};

newCol.setFieldUpdater(new FieldUpdater<YerValueObject, String>() {
    @Override
    public void update(int index, YerValueObject obj, String value) {
        //do whatever you need to here...
    }
});

table.addColumn(newCol, "ClickColumn");

【讨论】:

    【解决方案2】:

    如果您需要将 clickableTextCell 添加到 cellTable,这就是解决方案

    // ClickableTextCell
    
    ClickableTextCell anchorcolumn = new ClickableTextCell();
    table.addColumn(addColumn(anchorcolumn, new GetValue<String>() {
            public String getValue(Contact contact) {
                return "Click " + contact.anchor;
            }
        }, new FieldUpdater<Contact, String>() {
            public void update(int index, Contact object, String value) {
                Window.alert("You clicked " + object.name);
            }
        }), "Anchor");
    
    
    
    private <C> Column<Contact, C> addColumn(Cell<C> cell,final GetValue<C> getter,
    FieldUpdater<Contact, C> fieldUpdater) {
            Column<Contact, C> column = new Column<Contact, C>(cell) {
    
            @Override
            public C getValue(Contact object) {
                return getter.getValue(object);
            }
        };
        column.setFieldUpdater(fieldUpdater);
    
        return column;
    }
    
    private static interface GetValue<C> {
        C getValue(Contact contact);
    }
    
    
    // A simple data type that represents a contact.
        private static class Contact {
            private final String address;
            private final String name;
            private final String anchor;
    
            public Contact(String name, String address, String anchor) {
                this.name = name;
                this.address = address;
                this.anchor = anchor;
            }
        }
    

    【讨论】:

    • 这是一种非常复杂的创建 ClickableTextCell 的方法。我更喜欢下面小猪的回答。
    【解决方案3】:

    创建一个覆盖onBrowserEvent 方法的Column

    像这样:

    new Column<T, String>(new TextCell()) {
        @Override
        public String getValue(T object) {
            return object.getProperty();
        }
    
        @Override
        public void onBrowserEvent(Context context, Element elem, T object, NativeEvent event) {
            // TODO You can check which event you want to catch
            Window.open("http://www.stackoverflow.com", "StackOverFlow", "");
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多