我最近使用以下代码使用 GWT 2.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() 不显示任何内容以及为什么我每添加一个空白行就会得到一个额外的空白行吗?