我正在尝试从文本单元中捕获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");
答案 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");
}
}