Ответ 1
Если это опция, вы можете использовать FlexTable вместо Grid:
FlexTable flexTb= new FlexTable();
flexTb.getFlexCellFormatter().setColSpan(0, 1, 2);
flexTb.setWidget(0, 1, new Label("Hello"));
скажем, у меня есть код вроде этого
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, содержащей виджет?
Если это опция, вы можете использовать FlexTable вместо Grid:
FlexTable flexTb= new FlexTable();
flexTb.getFlexCellFormatter().setColSpan(0, 1, 2);
flexTb.setWidget(0, 1, new Label("Hello"));
Существует не так-простое решение. Он работает, манипулируя непосредственно 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();
Он выполняет следующие действия:
Обратите внимание, что я использовал for-loops. Я попробовал это с одним единственным циклом, но некоторые из элементов были NULL, поэтому я пробовал это так и работал.
Томас