各 Column に対して Cell のインスタンスは 1 つだけであり、すべての値が Cell インスタンスによって表されるわけではないことに注意してください。上記の構造は、CellTable.setRowData で設定したデータの構造になります。
Cell は、 AbstractCellのスーパー コンストラクターまたはCellgetConsumedEvents
で定義されたメソッドを介して、関心のあるイベントを宣言する必要があります。あなたの場合、「クリック」イベント。
その後、カスタム セルにメソッドを実装onBrowserEvent
し、クリックに反応できます。このメソッドには、イベントが参照する行と列 ( Cell.Contextを参照)、およびクリックに関連付けられたキーと値を示すコンテキストが渡されます。
あなたの場合、カスタム セルは次のようになります。
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);
}
}
}
}
列レベルでイベントをインターセプトすることもできます。
詳細については、開発ガイドをご覧ください。