Установка colspan и rowspan для ячейки таблицы не изменяет индекс соседних ячеек, а просто отталкивает их.Например, для достижения этой таблицы:
+-+-+
|a|b|
| |-+
|a|c|
+-+-+
Мы используем:
ft.setWidget(0, 0, a);
ft.setWidget(0, 1, b);
ft.setWidget(1, 0, c); // !!!
ft.getFlexCellFormatter().setRowSpan(0,0,2);
Смотрите, виджет c
находится в первой ячейке, которая принадлежит первой строке.Это может помочь увидеть вещи таким образом, если вы посмотрите на HTML, который будет сгенерирован:
<table>
<tr>
<td rolspan="2">a</td><td>b</td>
</tr><tr>
<td>c</td>
</tr>
</table>
Настройте ваши индексы ячеек, и все должно выстроиться так, как вы хотите:
ft.setWidget(0, 0, a);
ft.setWidget(0, 1, b);
ft.setWidget(0, 2, c);
ft.setWidget(1, 0, d);
ft.setWidget(1, 1, e);
ft.setWidget(1, 2, f);
ft.setWidget(1, 3, g);
ft.setWidget(2, 0, h);
ft.setWidget(2, 1, i);
ft.setWidget(3, 0, j);
ft.setWidget(4, 0, k);
ft.getFlexCellFormatter().setColSpan(0, 1, 2);
ft.getFlexCellFormatter().setColSpan(0, 2, 2);
ft.getFlexCellFormatter().setRowSpan(1, 0, 4);
ft.getFlexCellFormatter().setColSpan(1, 1, 2);
ft.getFlexCellFormatter().setRowSpan(1, 2, 3);
ft.getFlexCellFormatter().setRowSpan(1, 3, 3);
ft.getFlexCellFormatter().setColSpan(3, 0, 2);
ft.getFlexCellFormatter().setColSpan(4, 0, 4);