Gwt 如何将ClickableTextCells列添加到cellTable

Gwt 如何将ClickableTextCells列添加到cellTable,gwt,gwt-2.2-celltable,gwt-2.2,Gwt,Gwt 2.2 Celltable,Gwt 2.2,大家好 我需要一个简单的例子来演示如何将ClickableTextCells列添加到cellTable 谢谢。如果您需要将clickableTextCell添加到cellTable,这就是解决方案 // ClickableTextCell ClickableTextCell anchorcolumn = new ClickableTextCell(); table.addColumn(addColumn(anchorcolumn, new GetValue<String>() {

大家好 我需要一个简单的例子来演示如何将ClickableTextCells列添加到cellTable


谢谢。

如果您需要将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
ClickableTextCell anchorcolumn=新的ClickableTextCell();
表.addColumn(addColumn(anchorcolumn,new GetValue)(){
公共字符串getValue(联系人){
返回“单击”+contact.anchor;
}
},新的FieldUpdater(){
公共无效更新(int索引、联系人对象、字符串值){
Window.alert(“您单击了”+object.name);
}
})“锚”);
私有列addColumn(单元格,最终GetValue获取程序,
FieldUpdater(字段更新程序){
列=新列(单元格){
@凌驾
公共C getValue(联系人对象){
返回getter.getValue(对象);
}
};
column.setFieldUpdater(fieldUpdater);
返回列;
}
私有静态接口GetValue{
C getValue(触点触点);
}
//表示联系人的简单数据类型。
私有静态类联系人{
私有最终字符串地址;
私有最终字符串名;
私人最终绳锚;
公共联系人(字符串名称、字符串地址、字符串锚){
this.name=名称;
this.address=地址;
this.anchor=锚;
}
}

创建一个
覆盖
onBrowserEvent
方法

像这样:

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", "");
    }
};
new列(new TextCell()){
@凌驾
公共字符串getValue(T对象){
返回object.getProperty();
}
@凌驾
public void onBrowserEvent(上下文、元素元素、T对象、NativeEvent事件){
//TODO您可以检查要捕获的事件
窗口打开(“http://www.stackoverflow.com“,”堆栈溢出“,”);
}
};
Column newCol=新列(新的ClickableTextCell()){
@凌驾
公共字符串getValue(YearValueObject obj){
返回obj.someMethod();
}
};
newCol.setFieldUpdater(newFieldUpdater(){
@凌驾
public void更新(int索引、YerValueObject对象、字符串值){
//在这里做你需要做的一切。。。
}
});
表.addColumn(newCol,“ClickColumn”);

你好,艾哈迈德。请将问题还原为原始形式,并将解决方案作为答案发布。如果您对stackoverflow仍有疑问,请阅读。谢谢。完成了。。。谢谢你的评论,不客气。如果可以,你也应该“接受”你自己的答案。这是一种创建ClickableTextCell的非常复杂的方法。我更喜欢下面猪猪的回答。
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");