Код: Выделить всё
@uiBinder Flextable flextable;
Код: Выделить всё
initWidget(uiBinder.createAndBindUi(this));а затем создается экземпляр flexTable. Я пропустил эту часть. Использование setText() работает.
Код: Выделить всё
//Header row
private void setupFlexTable() {
flexTable.setText(0, 0, "Label One");
flexTable.setText(0, 1, "Label Two");
}
Код: Выделить всё
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);
Код: Выделить всё
@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);
}
Другая проблема: мне нужно синхронизировать эту таблицу со списком файлов над ней, но с помощью 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;
}
}