我正在使用JTable
,我需要允许移动其列。但是出现了问题。一旦他们重新安排,就像他们只改变了内容和标题。但我也需要改变它们的索引。
为了说明这一点,我举一个例子。假设我的第一列叫做“名字”。调用'setName()'方法时,无论列在何处,名称都必须始终转到该列。但不是第一栏。希望你明白我的观点!
我已经完成了所需的方法编写。希望有一种方法可以实现这一点,而无需触及完成的方法。
非常感谢任何帮助!!!
答案 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