拖动Jtable中的列后,列索引未改变

3

我正在使用JTable来显示信息。在渲染信息后,如果我拖动列以重新排序它们,则会话中的信息以相同的方式显示。但是,当我尝试通过迭代列名来检查更改时,顺序与旧顺序相同。为什么API中没有最新视图?


5
视图和模型是完全不同的。更改列的顺序不应影响模型。 - Hovercraft Full Of Eels
1个回答

9
如Hovercraft Full Of Eels所评论的那样,视图中的列索引独立于模型中的列索引。JTable的JavaDoc对此有所说明:
默认情况下,可以在JTable中重新排列列,以使视图的列以与模型中的列不同的顺序显示。这不会影响模型的实现:当重新排序列时,JTable在查询模型之前会在内部维护列的新顺序并转换其列索引。

JTable提供了convertColumnIndexToModel()convertColumnIndexToView()方法,您可以使用它们将列号从一种转换为另一种。您可以使用这些方法来确定列是否已重新排列。

要在发生更改时得到通知,请使用TableColumnModelListener

myTable.getColumnModel().addColumnModelListener( new TableColumnModelListener() {
    //etc.
} );

在JDK 1.5中,有没有一种方法可以将视图中的更改应用到模型中? - kiran
1
长期以来,支持转换列索引的功能一直存在。JDK6增加了对转换行索引的支持,因为添加了排序/过滤支持。 - camickr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接