您的代码假定JTable将按特定顺序调用您的某些方法.你不应该做出这样的假设.
例如,该方法getRowCount()
假定结果集在第一行之前,并且到最后一行计算行.如果它是第二次调用,或者如果之前调用了另一个执行相同操作的方法,getRowCount()
则将开始返回0.
将数据库访问代码与GUI代码分开.如果要显示数据库查询中的数据,请在单独的类的方法中执行查询,并使此方法返回对象列表.然后使用此对象列表构建AbstractTableModel实现.表模型不应该处理结果集.
您的代码是使用该结果集(在的混合物getRowCount()
和getColumnCount()
例如),以及使用由该结果集建立了一个列表(在getValueAt()
,例如).在创建模型之前构建列表,然后仅在表模型实现中使用此列表.并修复getValueAt()
方法:它应该是
return list.get(rowIndex).get(columnIndex);