【问题标题】:Column index not changing after dragging columns in Jtable在 Jtable 中拖动列后,列索引未更改
【发布时间】:2011-12-20 16:40:09
【问题描述】:

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

【问题讨论】:

  • 视图和模型完全不同。更改列的顺序不会影响模型。

标签: java swing jtable


【解决方案1】:

正如 Hovercraft Full Of Eels 所评论的,视图中的列索引的变化与模型中的列索引无关。 JTable's JavaDoc 有话要说:

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

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

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

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

【讨论】:

  • JDK 1.5 中有什么方法可以将视图的更改应用到模型吗?
  • 对转换列索引的支持已经存在很长时间了。 JDK6 添加了对转换行索引的支持,因为添加了排序/过滤支持。
猜你喜欢
  • 2013-04-01
  • 2011-01-07
  • 2013-08-16
  • 2013-07-12
  • 1970-01-01
  • 2013-03-07
  • 2021-05-09
  • 2012-06-22
  • 2013-04-13
相关资源
最近更新 更多