我正在使用JTable来显示信息。如果我拖动列以重新排序它们之后呈现信息,则会话中的信息以相同的方式显示。但是当我尝试通过迭代列名来检查列名来捕获更改时,序列与旧列相同。为什么API无法提供最新视图?
答案 0 :(得分:8)
正如Hovercraft Full Of Eels评论的那样,视图中的列索引与模型中的列索引无关。 JTable
's JavaDoc可以这样说:
默认情况下,可以在
JTable
中重新排列列,以便视图的列以与模型中的列不同的顺序显示。这根本不会影响模型的实现:当列重新排序时,JTable
在内部维护列的新顺序,并在查询模型之前转换其列索引。
JTable
提供了可用于将列号从一个转换为另一个的方法convertColumnIndexToModel()
和convertColumnIndexToView()
。您可以使用它们来确定是否(以及如何)重新排列列。
要在列发生更改时收到通知,请使用TableColumnModelListener
:
myTable.getColumnModel().addColumnModelListener( new TableColumnModelListener() {
//etc.
} );