0

我正在使用 GWTFlexTable并且有一个问题:我正在删除之后的任何行,当我尝试添加新行时,它正在给出rowcount值,包括删除的行,因为在迭代最后一行给出时 IndexOutOfBoundsException

for( count=0; count < table.getRowCount(); count++ )
{

}

给出这个例外

[FATAL] Uncaught Exception:
 [java] java.lang.IndexOutOfBoundsException:
 [java] Column index: 0, Column size: 0
4

2 回答 2

0

如果您使用按钮删除行..在删除特定行时编写单击处理程序。

 Button removeSelectedRow = new Button();
 removeSelectedRow.addClickHandler(new ClickHandler() {
  @Override
  public void onClick(ClickEvent event) {
    int rowIndex = flexTable.getCellForEvent(event).getRowIndex();
    flexTable.removeRow(rowIndex);
  }
}); 

不要使用 rowCount()。
像这样使用 getRowIndex() 位置。这将有助于删除它可以以任何顺序或任何位置或页面中任何位置显示的行。这是你的需要吗?

于 2014-04-15T11:44:06.847 回答
0

请查看GWT Showcase - FlexTable上的演示。

这是直接从展示案例中添加/删除行的代码。使用这些方法来执行这些操作。在进行任何操作之前,请务必先检查行数。

/**
 * Add a row to the flex table.
 */
private void addRow(FlexTable flexTable) {
    int numRows = flexTable.getRowCount();
    flexTable.setWidget(numRows, 0, widget1));
    flexTable.setWidget(numRows, 1, widget2));
    flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);
}

/**
 * Remove a row from the flex table.
 */
private void removeRow(FlexTable flexTable) {
    int numRows = flexTable.getRowCount();
    if (numRows > 1) {
        flexTable.removeRow(numRows - 1);
        flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows - 1);
    }
}
于 2014-04-14T12:32:06.253 回答