我最近使用GWT2.4创建了一个flextable,代码如下:
@uiBinder Flextable flextable;之后,我在构造函数中调用setupFlexTable()
initWidget(uiBinder.createAndBindUi(this));
然后实例化flexTable。我错过了这一部分。使用setText()是可行的。
//Header row
private void setupFlexTable() {
flexTable.setText(0, 0, "Label One");
flexTable.setText(0, 1, "Label Two");
}setWidget没有显示,但我使用的是:
int numRows = flexTable.getRowCount();
flexTable.setWidget(numRows, 0, new Label("Label One"));
flexTable.setWidget(numRows, 1, new Label("Label Two"));
flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);下面是我在其中添加行的地方,此代码适用于setWidget():
@Override
public void setRowData(Data data) {
int rowCount = flexTable.getRowCount() + 1;
flexTable.setWidget((rowCount), 0, new Label(data.getDataName()));
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);
flexTable.setWidget((rowCount), 1, new Label(data.getData()));
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 1, 2);
}另外,当我使用flexTable.setText("Label One“)时;等等...它显示了,但是当我使用setWidget()时,它不显示吗?
另一个问题是,我需要使这个表与它上面的文件列表保持同步,但是使用Firebug时,我发现如果我向表中动态添加两行,它会显示rowCount为4?当我尝试删除一行时,这会抛出一个索引越界错误,它会到达这些空行中的一个。
作为一种变通方法,我使用此代码查找需要删除的行,并避免空行的问题(显然,表中插入了两个且只有两个空行)。
int rows = flexTable.getRowCount();
for(int i=0; i < rows; i++){
//Match the text in the first field in order to know the proper row to delete.
if(flexTable.isCellPresent(i,0) && flexTable.getText(i, 0).equalsIgnoreCase(fileName)){
flexTable.removeRow(i);
break;
}
}那么,谁能解释一下为什么setWidget()没有显示任何内容,为什么我每添加一个内容就会得到一个额外的空行?
发布于 2012-01-05 02:28:58
您不应该在代码中实例化FlexTable - GWT会为您做这件事。一旦创建了new FlexTable,您就是在处理一个新对象,而不是小部件中包含的对象。在您发布的代码中,您有一个名为flextable的变量和另一个名为flexTable的变量-很容易想象会发生一些混淆。
我认为,一旦你正确地设置了这个,你的其他问题可能会变得更加清晰。
发布于 2012-01-06 01:00:48
我第一次把行、列、小部件的设置弄错了。愚蠢的语法问题。这是第一个问题的正确代码。
flexTable.setWidget(0, 0, new Label("Label One"));这是第二个问题的答案。
这是令人不快的代码行:
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);它应该是行,列,行跨度,我把它弄混了,所以它添加了空行。
发布于 2014-04-06 17:10:01
目前,FlexTable使用元素td的过时元素属性对齐宽度高度等。从HTML5开始,这些不再受支持。GWT应该更改覆盖HTMLTable的FlexTable和其他类,以使用CSS而不是这些非常旧的元素属性!
https://stackoverflow.com/questions/8731800
复制相似问题