在对表进行排序后,JTable值不会刷新

时间:2014-08-31 06:25:21

标签: java swing jtable tablemodel

我有JTable对象,填充了我的AbstractTableModel实现提供的数据。我有鼠标事件监听器,当我点击某个单元格时,我得到它的行和列位置。使用此值,我从TableModel调用getValueAt(int row,int column)方法,然后获取我的数据。问题是当我点击列名时,可以对表中的数据进行排序。当我再次尝试调用getValueAt()时,我得到旧的值 例如:

COL1 | COL2

VAl11难| val21

val12 | val22 当我点击col1

值是:

COL1 | COL2

val12 | val22

val11 | val21

我调用getValueAt(0,0)仍然得到val11,我应该得到val12。我怎样才能解决这个问题 ?谢谢!

2 个答案:

答案 0 :(得分:3)

视图中的行索引(您可能从鼠标侦听器获取 - 如果您按照请求发布代码,我们知道而不必猜测)与模型中的行索引不同,一旦表已排序。要从视图索引转换为模型索引,请使用convertRowIndexToModel()

请注意,必须对列进行同样的注意,因为用户可以通过拖放来重新排序。

答案 1 :(得分:0)

我已经设法做到了。 table.getValueAt()应直接调用表对象。我以前的尝试是table.getModel()。getValueAt()。