GWT流量表填充单元
在GWT中,我试图在网格中获得一个带有按钮的FlexTable,以便单击其中一个按钮会导致某些事情发生。但是,当我在浏览器中查看结果时,会得到以下结果:GWT流量表填充单元,gwt,Gwt,在GWT中,我试图在网格中获得一个带有按钮的FlexTable,以便单击其中一个按钮会导致某些事情发生。但是,当我在浏览器中查看结果时,会得到以下结果: +-+-+ +-+ |a|b| |c| +-+-+ +-+ |e| +-+-+-+-+-+ |d|h|i|f|g| +-+-+-+-+-+ |j| +-+ |k| +-+ 而我想要的是: +-+---+---+ |a| b | c | +-+---+-+-+ | | e |
+-+-+ +-+
|a|b| |c|
+-+-+ +-+
|e|
+-+-+-+-+-+
|d|h|i|f|g|
+-+-+-+-+-+
|j|
+-+
|k|
+-+
而我想要的是:
+-+---+---+
|a| b | c |
+-+---+-+-+
| | e | | |
| +-+-+ | |
| |h|i|f|g|
|d+-+-+ | |
| | j | | |
| +---+-+-+
| | k |
+-+-------+
我尝试按照API中的建议使用table.getFlexCellFormatter().setColSpan(row,col,span)
,但这导致了上面的第一个结果。我该怎么做有什么想法吗
@我的密码是
public MyPanel() {
Button b;
FlexTable ft = new FlexTable();
ClickHandler click = new ClickHandler() {
@Override
public void onClick() {
// do something here with the button that was clicked
}
}
b = new Button("a");
b.addClickHandler(click);
ft.setWidget(0, 0, b);
// do the same for button "b" at (0,1), "c" at (0,3), "d" at (1,0), "e" at (1,1),
// "f" at (1,3), "g" at (1,4), "h" at (2,1), "i" at (2,2), "j" at (3,1), "k" at (4,1)
ft.getFlexCellFormatter().setColSpan(0, 1, 2);
ft.getFlexCellFormatter().setColSpan(0, 3, 2);
ft.getFlexCellFormatter().setRowSpan(1, 0, 4);
ft.getFlexCellFormatter().setColSpan(1, 1, 2);
ft.getFlexCellFormatter().setRowSpan(1, 3, 3);
ft.getFlexCellFormatter().setRowSpan(1, 4, 3);
ft.getFlexCellFormatter().setColSpan(3, 1, 2);
ft.getFlexCellFormatter().setColSpan(4, 1, 4);
}
在表格单元格上设置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);
请参阅,widgetc
位于属于第一行的第一个单元格中。如果你考虑生成的HTML:这样做可能有助于看到这种情况:
<table>
<tr>
<td rolspan="2">a</td><td>b</td>
</tr><tr>
<td>c</td>
</tr>
</table>
虽然这部分解决了问题,但并不能解决按钮扩展以完全填充单元格的问题。如上所述,我希望,例如,“e”按钮的宽度与“h”和“I”按钮的组合宽度相同。这是一个风格问题。将按钮宽度和高度设置为
100%
,它们将完全填满容器。这对宽度有效,但对高度无效(即按钮“d”、“f”和“g”仍然没有对齐。)啊。。。对抱歉,height:100%
在一行范围内不起作用。遗憾的是,除了不使用表之外,我能找到的所有东西都没有列出任何修复方法。在这方面,or可能是有用的。
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);