0

我有一个 JTable 和该表的模型。

现在我想更改列的顺序并隐藏或显示一些列(例如,通过右键单击菜单在“详细视图”中的 Windows 资源管理器)。

我的第一个问题是 getColumnName 函数。我是否必须跟踪哪个列在哪个位置,然后返回正确的 columnName 或者这已经是模型的一部分?getValueAt 函数也是如此。如果我得到 columnIndex = 0,我是否可以始终返回第一列的值,即使用户已将此列拖到表的末尾?

添加/删除列的问题几乎相同。如果我这样做,当然我必须触发TableStructureChanged,但我是否还必须适应例如getColumnName 函数?

我还没有找到这方面的教程。所有教程都停留在“您可以使用模型”。我真的很想看到这样一个动态模型的例子。

非常感谢。

4

2 回答 2

2

您应该使用模型的 getColumn(int) 方法,并且为了访问模型,您需要使用JTableconvertRowIndexToModel(int)convertColumnIndexToModel(int)和用于转换的等价物来转换行和列视图索引模型索引以查看索引。

于 2013-03-06T19:34:16.457 回答
0

您需要了解“视图”和“模型”之间的区别。当您对 JTable(视图)中的列重新排序时,这不会更改模型中数据的顺序。

如果要访问您使用的表中显示的第一列:

table.getValueAt(row, 0);

如果要访问模型中的第一列,则使用:

table.getModel().getValueAt(row, 0);

我想隐藏或显示一些列

请参阅表列管理器

于 2013-03-07T04:55:14.633 回答