Я недавно создал flextable, используя GWT 2.4, используя этот код:
@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 () ничего не отображает и почему я получаюдополнительная пустая строка для каждого, что я добавляю?