Доброго времени суток.
Накидал по-быстрому солюшн для Вашей проблемы.
Решение простое: нужно в клик-хандлере для чекбокса после "полезной" логики остановить прокидывание ивента методом stopPropagation().
// . . . . . .
public OrderedTable() {
initWidget(uiBinder.createAndBindUi(this));
initTableHeader();
fillTableWithDummyData();
tableOrdered.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Cell cell = tableOrdered.getCellForEvent(event);
Window.alert("You are clicked on row: " + cell.getRowIndex());
}
});
}
private void fillTableWithDummyData() {
for (int i = 0; i < 15; i++) {
addRow(i);
}
}
private void addRow(final int index) {
final Label labelTitleCell = new Label("Value: " + String.valueOf(index + 1));
final CheckBox cb = new CheckBox("CheckBox" + String.valueOf(index));
cb.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("You are clicked on CheckBox: " + String.valueOf(index));
event.stopPropagation();
}
});
final HorizontalPanel hp = new HorizontalPanel();
hp.setSpacing(3);
hp.add(labelTitleCell);
hp.add(cb);
tableOrdered.setWidget(rowIndex, 0, hp);
rowIndex++;
}
// . . . . . .