1

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

为了更清楚地说明这一点,我将举一个例子。假设我的第一列称为“名称”。调用“setName()”方法时,名称必须始终位于该列,无论该列在哪里。但不是第一列..希望你明白我的意思!

我已经写完了所需的方法。希望有一种方法可以在不触及完成的方法的情况下实现这一目标。

任何帮助深表感谢!!!

4

2 回答 2

6

为了更清楚地说明这一点,我将举一个例子。假设我的第一列称为“名称”。调用“setName()”方法时,名称必须始终位于该列,无论该列在哪里。但不是第一列..希望你明白我的意思!

如果您想更改数据,只需TableModel直接更改底层证券。中的列的顺序永远不会改变,TableModel只有在视图(JTable)中这些列才被重新排序。

如果您确实想浏览表格,则必须使用@MadProgrammer 提到的可用JTable#convertColumnIndexToModel(view -> model) 和(model->view) 方法将“view-coordinates”转换为“model-coordinates” JTable#convertColumnIndexToView.

您当然不应该更新您在其中一条评论中提到的setValueAt方法。TableModel如前所述,TableModel不会改变列的顺序,所以setValueAt应该总是用“模型坐标”调用,因此不需要转换那些

于 2012-07-27T06:28:25.467 回答
4

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

查看JTable.convertColumnIndexToModel(int viewColumnIndex)JTable.convertColumnIndexToView(int modelColumnIndex)

本质上,您需要将列索引与视图索引相互转换。

你不应该担心这个,TableModel因为它会照顾你我的JTable

您将遇到类似的问题RowSorter

于 2012-07-27T05:08:22.320 回答