日期:2014-05-20  浏览次数:20867 次

Jtable setRowCount()方法失效
代码如下所示 第三行tableModel.setRowCount(0)已经设置为0,可是第四行执行结果显示行数不为0,请各位帮忙看看,问题可能出在哪边
public void update(){
MyTableModel tableModel = (MyTableModel) commodityTable.getModel();
tableModel.setRowCount(0);
System.out.println(tableModel.getRowCount());
int size = commodityList.size();
value = new Object[size][4];
Commodity t = new Commodity();
for(int i=0;i<size;i++){
t = commodityList.get(i);
Vector v = new Vector(value[i].length);
v.add(i+1+"");
v.add(t.getId());
v.add(t.getName());
if(t.isOn_sale())
v.add(new Boolean(true));
else
v.add(new Boolean(false));
System.out.println(tableModel.getRowCount());
tableModel.addRow(v);
}
}

------解决方案--------------------
MyTableModel 这个类是你自己封装的吧?
setRowCount()方法中有没有给getRowCount()方法获得的属性赋值????
------解决方案--------------------
看下API。0小于当前size的话,当前index及大于index的将被discard

http://docs.oracle.com/javase/7/docs/api/javax/swing/table/DefaultTableModel.html#setRowCount(int)

public void setRowCount(int rowCount)
Sets the number of rows in the model. If the new size is greater than the current size, new rows are added to the end of the model If the new size is less than the current size, all rows at index rowCount and greater are discarded.
Since:
1.3
See Also:
setColumnCount(int)