Как установить значения rowspan и colspan в ячейке Grw gwt, содержащей виджет?

скажем, у меня есть код вроде этого

Grid g = new Grid(2,2);
Label l = new Label("Hello");
g.setWidget(0,1, l);
s.setColspan(0,1,2); // there is no such method :(

Итак, как я могу установить значения rowspan и colspan в ячейке gwt Grid, содержащей виджет?

Ответы

Ответ 1

Если это опция, вы можете использовать FlexTable вместо Grid:

FlexTable flexTb= new FlexTable();
flexTb.getFlexCellFormatter().setColSpan(0, 1, 2);
flexTb.setWidget(0, 1, new Label("Hello"));

Ответ 2

Существует не так-простое решение. Он работает, манипулируя непосредственно DOM.

Grid g = new Grid(10, 5);

Element e = g.getCellFormatter().getElement(0, 0);
e.setAttribute("colspan", "5");

ArrayList<Element> toRemove = new ArrayList<Element>();
for (int x=1; x<5; x++)
    toRemove.add(g.getCellFormatter().getElement(0, x));
for (Element f : toRemove)
    f.removeFromParent();

Он выполняет следующие действия:

  • установить Атрибут "colspan" от первого TD до "5"
  • удалите другие TD в одной строке

Обратите внимание, что я использовал for-loops. Я попробовал это с одним единственным циклом, но некоторые из элементов были NULL, поэтому я пробовал это так и работал.

Томас