事前定義された順序の列を持つJTableがあります。好き
+ ---------------------- +
| id | 名前|年齢|
列を順番に移動したい(たとえば、name = 0、age = 1、id = 2)。
+ ---------------------- +
|名前| 年齢| id |
どうすればそれを達成できますか?JTableにはメソッドmoveColumnsがありますが、残念ながらこれだけでは不十分です。順序がマップに格納されていると仮定します。
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は他の列も移動するため、これは機能しません。したがって、docuから:
void moveColumn(int columnIndex,
int newIndex)
columnIndexの列とそのヘッダーをnewIndexに移動します。columnIndexの古い列は、newIndexにあります。newIndexにあった列は、スペースを空けるために左または右にシフトされます。
どういうわけか、マップとまったく同じ順序で列を配置できますか?