如何在GWT CellTable中的ImageCell上添加clickhandler?

Ahm*_*mel 9 gwt

我试过这个但是没用

Column<ContactInfo, String> imageColumn = new Column<ContactInfo, String>(new ImageCell()) {
       @Override
       public String getValue(ContactInfo object) {
           return "contact.jpg";
          }
        };
        imageColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {

        @Override
        public void update(int index, ContactInfo object, String value) {
        Window.alert("You clicked " + object.firstName);
        }

    });
cellTable.addColumn(imageColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
Run Code Online (Sandbox Code Playgroud)

mut*_*kid 18

public class ButtonImageCell extends ButtonCell{

    @Override
    public void render(com.google.gwt.cell.client.Cell.Context context, 
            String value, SafeHtmlBuilder sb) {
        SafeHtml html = SafeHtmlUtils.fromTrustedString(new Image(value).toString());
        sb.append(html);
    }
}
Run Code Online (Sandbox Code Playgroud)

正在使用:

final Column<ReportDTOProxy, String> buttonImageCellTest = new Column<ProxyObject, String>(new ButtonImageCell()) {
    @Override
    public String getValue(ProxyObject row) {
        //url to image
        return row.getImageUrl();
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的解决方案.完全低估了. (4认同)

小智 8

您可以扩展ImageCell类并覆盖它的方法 - getConsumedEvents和onBrowserEvent.例:

    private class MyImageCell extends ImageCell{

    @Override
    public Set<String> getConsumedEvents() {
        Set<String> consumedEvents = new HashSet<String>();
        consumedEvents.add("dblclick");
        return consumedEvents;
    }

    @Override
    public void onBrowserEvent(Context context, Element parent,
            String value, NativeEvent event,
            ValueUpdater<String> valueUpdater) {
            switch (DOM.eventGetType((Event)event)) {
            case Event.ONDBLCLICK:
                // TODO
                break;

            default:
                break;
            }
    }

}
Run Code Online (Sandbox Code Playgroud)


Ame*_*mey -1

您需要使用适当的位来接收事件()。

请参阅问题将 ClickHandler 添加到包含许多其他小部件的 div的答案。