请注意,每个 Column 只有一个 Cell 实例,并非每个值都由一个 Cell 实例表示。您上面描述的结构将是您在 CellTable.setRowData 中设置的数据的结构。
Cell 必须通过AbstractCell中的超级构造函数或CellgetConsumedEvents
中定义的方法来声明它感兴趣的事件。在你的情况下,“点击”事件。
然后,您可以在自定义单元格中实现该onBrowserEvent
方法并对点击做出反应。上下文将传递给此方法,指示事件引用的行和列(请参阅Cell.Context)以及与单击关联的键和值。
在您的情况下,自定义 Cell 看起来像这样:
public class MyCell extends AbstractCell<String> {
public MyCell() {
super("click");
}
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
// Handle the click event.
if ("click".equals(event.getType())) {
// Ignore clicks that occur outside of the outermost element.
EventTarget eventTarget = event.getEventTarget();
if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) {
doAction(value, valueUpdater);
}
}
}
}
您还可以在列级别拦截事件。
您可以在开发指南中找到更多信息