在JTable中移动列后设置列索引

时间:2012-07-27 05:00:51

标签: java swing jtable

我正在使用JTable,我需要允许移动其列。但是出现了问题。一旦他们重新安排,就像他们只改变了内容和标题。但我也需要改变它们的索引。

为了说明这一点,我举一个例子。假设我的第一列叫做“名字”。调用'setName()'方法时,无论列在何处,名称都必须始终转到该列。但不是第一栏。希望你明白我的观点!

我已经完成了所需的方法编写。希望有一种方法可以实现这一点,而无需触及完成的方法。

非常感谢任何帮助!!!

2 个答案:

答案 0 :(得分:6)

  

为了说明这一点,我举一个例子。假设我的第一列叫做“名字”。调用'setName()'方法时,无论列在何处,名称都必须始终转到该列。但不是第一栏。希望你明白我的观点!

如果您想更改数据,只需直接更改基础TableModel即可。列的顺序永远不会在TableModel中更改,只有在视图(JTable)中才会重新排序这些列。

如果您想浏览表格,则必须使用可用的JTable#convertColumnIndexToModel(视图 - >模型)和{{}将“视图坐标”转换为“模型坐标” 1}}(模型 - >视图)方法,如@MadProgrammer所述。

如您在其中一条评论中所提到的,您当然不应更新JTable#convertColumnIndexToView的{​​{1}}方法。如前所述,setValueAt不会更改列的顺序,因此应始终使用“模型坐标”调用TableModel,因此无需转换那些

答案 1 :(得分:4)

哦是的,我喜欢这个,它总是让我;)

结帐JTable.convertColumnIndexToModel(int viewColumnIndex)JTable.convertColumnIndexToView(int modelColumnIndex)

基本上,您需要将列索引转换为视图索引和从视图索引转换。

TableModel你不应该担心这个问题,因为我JTable照顾你。

RowSorter

会遇到类似的问题