我最近创建使用GWT 2.4使用此代码flextable:与GWT 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()不显示任何东西,为什么我得到一个额外的空白行中每一个我补充?
它看起来像你的代码片段缺少上下文 - 你是否使本地变量隐藏你的成员变量?你的代码中是否指'@ UiField'? – 2012-01-04 18:25:22
我清理了一下,看看为什么我得到一个空flexTable,呃!这仍然不能解释空的空白行或为什么setWidget()不显示任何东西。 – 2012-01-04 18:39:54
你能告诉我你是如何调用'setWidget'吗? – 2012-01-04 19:23:20