有一个 JTable,其中的列按预定义顺序排列。像
+------------------------+
|标识 | 姓名 |年龄 |
我想按顺序移动列(例如 name=0、age=1、id=2)。
+------------------------+
|名称 | 年龄 | 编号 |
我怎样才能做到这一点?JTable 有方法 moveColumns,但不幸的是这还不够。假设 order 存储在 map: 中。
Map<String, Integer> columnOrder = getOrder();
for(Map.Entry<String, Integer> e : columnOrder.entrySet()) {
int columnIndex = jtable.convertColumnIndexToView(jtable.getColumn(e.getKey()).getModelIndex());
jtable.getColumnModel().moveColumn(columnIndex, e.getValue());
}
这不起作用,因为 moveColumn 也会移动其他列,所以从文档中:
void moveColumn(int columnIndex,
int newIndex)
将 columnIndex 处的列及其标题移动到 newIndex。columnIndex 处的旧列现在将在 newIndex 处找到。曾经位于 newIndex 的列向左或向右移动以腾出空间。
我可以(动态地)以某种方式将列的顺序与我的地图中的顺序完全相同吗?