Java GWT:将带有处理程序的图像添加到表头

Java GWT:将带有处理程序的图像添加到表头,java,gwt,Java,Gwt,我在GWT的CellTable上遇到了一些问题 我想做的是: 我有一个CellTable,我想添加带有图像的标题,并向其添加操作。但它在我的代码中不起作用 我的代码(全部): 导入java.util.array; 导入java.util.List; 导入com.google.gwt.cell.client.cell; 导入com.google.gwt.cell.client.ClickableTextCell; 导入com.google.gwt.core.client.EntryPoint; 导

我在GWT的CellTable上遇到了一些问题

我想做的是: 我有一个CellTable,我想添加带有图像的标题,并向其添加操作。但它在我的代码中不起作用

我的代码(全部):

导入java.util.array;
导入java.util.List;
导入com.google.gwt.cell.client.cell;
导入com.google.gwt.cell.client.ClickableTextCell;
导入com.google.gwt.core.client.EntryPoint;
导入com.google.gwt.event.dom.client.ClickEvent;
导入com.google.gwt.event.dom.client.ClickHandler;
导入com.google.gwt.safehtml.shared.SafeHtmlBuilder;
导入com.google.gwt.safehtml.shared.safehtmlitls;
导入com.google.gwt.user.cellview.client.CellTable;
导入com.google.gwt.user.cellview.client.Header;
导入com.google.gwt.user.cellview.client.TextColumn;
导入com.google.gwt.user.client.ui.Image;
导入com.google.gwt.user.client.ui.RootPanel;
导入com.google.gwt.user.client.ui.VerticalPanel`
公共类HelloGWT实现入口点{
moduleload()上的公共void{
RootPanel.get().add(newmytable());
}
}
班级联系{
公共联系人(字符串名称、整数编号){
这个数字=数字;
this.name=名称;
}
公共字符串名称;
公共整数;
}
类MyTable扩展了VerticalPanel{
public List List=Arrays.asList(新联系人(“联系人1”,1),
新联系人(“联系人2”,2),新联系人(“联系人3”,3)
);
公共MyTable(){
CellTable=新的CellTable();
table.addColumn(新建MyColumn(),新建MyHeader(新建ClickableTextCell(),“MyHeader!”);
表.setRowData(0,列表);
增加(表);
}
}
类MyColumn扩展了TextColumn{
公共MyColumn(){
}
@凌驾
公共字符串getValue(联系人对象){
//TODO自动生成的方法存根
返回object.name;
}
}
类MyHeader扩展了Header{
私有字符串列名;
私有映像映像=新映像(“http://www.google.com/mobile/images/mgc3/google-mobile-app48.png");
公共MyHeader(单元格、字符串列名称){
超级电池;
//TODO自动生成的构造函数存根
this.columnName=columnName;
addClickHandler(新的ClickHandler()
{
@凌驾
公共作废一次点击(点击事件){
System.out.println(“单击!”);
}
}
);
}
@凌驾
公共字符串getValue(){
//TODO自动生成的方法存根
返回列名称;
}
@凌驾
公共void呈现(Cell.Context,SafeHtmlBuilder sb){
StringBuilder s=新的StringBuilder();
s、 追加(列名称);
设置大小(“20px”、“20px”);
s、 附加(图像);
sb.append(SafeHtmlUtils.fromsafecontant(s.toString());
}
}
谢谢你的建议

import java.util.Arrays;
import java.util.List;

import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.ClickableTextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Header;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;`

public class HelloGWT implements EntryPoint {

    public void onModuleLoad() {

        RootPanel.get().add(new MyTable());

    }
}

class Contact {
    public Contact(String name, int number) {
        this.number = number;
        this.name = name;
    }

    public String name;
    public int number;
}

class MyTable extends VerticalPanel {

    public List<Contact> list = Arrays.asList(new Contact("contact_1", 1),
            new Contact("contact_2", 2), new Contact("contact_3", 3)

    );

    public MyTable() {
        CellTable<Contact> table = new CellTable<Contact>();
        table.addColumn(new MyColumn(), new MyHeader(new ClickableTextCell(), "MyHeader!"));
        table.setRowData(0, list);

        this.add(table);
    }
}

class MyColumn extends TextColumn<Contact> {

    public MyColumn() {

    }

    @Override
    public String getValue(Contact object) {
        // TODO Auto-generated method stub
        return object.name;
    }
}

class MyHeader extends Header<String> {

    private String columnName;
    private Image image = new Image("http://www.google.com/mobile/images/mgc3/google-mobile-app48.png");

    public MyHeader(Cell<String> cell, String columnName) {
        super(cell);
        // TODO Auto-generated constructor stub
        this.columnName = columnName;

        image.addClickHandler(new ClickHandler()
        {

            @Override
            public void onClick(ClickEvent event) {
                System.out.println("Click!");

            }

        }
                );
    }

    @Override
    public String getValue() {
        // TODO Auto-generated method stub
        return columnName;
    }

    @Override
    public void render(Cell.Context context, SafeHtmlBuilder sb) {
        StringBuilder s = new StringBuilder();
        s.append(columnName);
        image.setSize("20px", "20px");
        s.append(image);
        sb.append(SafeHtmlUtils.fromSafeConstant(s.toString()));
    }

}