我有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。我怎样才能解决这个问题 ?谢谢!
答案 0 :(得分:3)
视图中的行索引(您可能从鼠标侦听器获取 - 如果您按照请求发布代码,我们知道而不必猜测)与模型中的行索引不同,一旦表已排序。要从视图索引转换为模型索引,请使用convertRowIndexToModel()。
请注意,必须对列进行同样的注意,因为用户可以通过拖放来重新排序。
答案 1 :(得分:0)
我已经设法做到了。 table.getValueAt()应直接调用表对象。我以前的尝试是table.getModel()。getValueAt()。