拖动Jtable中的列后列索引不会更改

时间:2011-11-02 20:57:18

标签: java swing jtable

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

1 个答案:

答案 0 :(得分:8)

正如Hovercraft Full Of Eels评论的那样,视图中的列索引与模型中的列索引无关。 JTable's JavaDoc可以这样说:

  

默认情况下,可以在JTable中重新排列列,以便视图的列以与模型中的列不同的顺序显示。这根本不会影响模型的实现:当列重新排序时,JTable在内部维护列的新顺序,并在查询模型之前转换其列索引。

JTable提供了可用于将列号从一个转换为另一个的方法convertColumnIndexToModel()convertColumnIndexToView()。您可以使用它们来确定是否(以及如何)重新排列列。

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

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