GWT-Textcell没有触发onclick事件

时间:2011-10-23 18:47:45

标签: java gwt enums

我正在尝试从文本单元中捕获onclick事件。为什么不激活点击事件 -

        TextCell tempCell = new TextCell() {
            @Override
            public void onBrowserEvent(Cell.Context context, Element parent, String value, 
                    NativeEvent event, ValueUpdater<String> valueUpdater) {
                 if ("click".equals(event.getType())) {
                     Window.alert("Clicked me from cell");
                 }
            }
        };
        Column<Contact, String> tempColumn = new Column<Contact, String>(tempCell) {
          @Override
          public String getValue(Contact object) {
            return object.address;
          }


        };
        table.addColumn(tempColumn, "Address");

2 个答案:

答案 0 :(得分:1)

我认为GWT事件是枚举,例如,Event.ONCLICK。

所以要解决,尝试直接使用Event.ONCLICK.toString()并查看事件是否触发。

一般来说,记住重要的是不要在代码中包含松散的字符串,因为假设事件的名称是“click”是一种非常脆弱的技术,如果发生任何变化,可能会导致应用程序失效。

答案 1 :(得分:0)

这不起作用,因为TextCell不消耗任何事件。您必须改为对AbstractSafeHtmlCell进行子类化,并通过将它们传递给构造函数来告诉它要使用哪些事件。

这样做:

private class MyTextCell  extends AbstractSafeHtmlCell<String> {

 /**
  * Constructs a TextCell that uses a {@link SimpleSafeHtmlRenderer} to render
  * its text.
  */
  public MyTextCell() {
    super(SimpleSafeHtmlRenderer.getInstance(), "click");

  }



  @Override
  public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
    if (value != null) {
      sb.append(value);
    }
  }

  @Override
  public void onBrowserEvent(Context context, Element parent,
        String value, NativeEvent event,
        ValueUpdater<String> valueUpdater) {
    GWT.log("Click event!!!!!! Not listening to anything else");
  }
}