Gwt flex表getRowCount()方法没有返回当前值

时间:2014-04-14 10:57:31

标签: java gwt flextable

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

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

}

给予此例外

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

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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()位置。 它将有助于删除它可以以任何顺序或任何位置或页面中的任何位置呈现的行。这是你的需要吗?