マトリックスを「たとえば6行x6列」に並べ替えたいのですが、次のようになります。
0 | 15 | 0 | 06 | 0 | 04
1 | 19 | 1 | 99 | 1 | 86
2 | 55 | 2 | 54 | 2 | 12
3 | 82 | 3 | 73 | 3 | 23
4 | 66 | 4 | 95 | 4 | 11
5 | 43 | 5 | 93 | 5 | 13
1列目と3列目と5列目が同じであることがわかります。それだけが必要。この結果を得るために、2番目と4番目と6番目の列を降順で並べ替えようとしていました。
3 | 82 | 1 | 99 | 1 | 86
4 | 66 | 4 | 95 | 3 | 23
2 | 55 | 5 | 93 | 5 | 13
5 | 43 | 3 | 73 | 2 | 12
1 | 19 | 2 | 54 | 4 | 11
0 | 15 | 0 | 06 | 0 | 04
2列目の最大値を移動すると、1列目でも彼の番号または名前を移動します。たとえば、1番目の列に移動(3:82)
し、以下同様(4:66)
に(2:55)
、同じ作業を他の列に移動します。
この問題を解決するために検索を試みていたところ、テーブルヘッダーをクリックしてマトリックスを並べ替えていることがわかりましたが、この場合は1つの列のみを並べ替えています。3を並べ替えます。これに加えて、2番目に不要なのは、テーブルヘッダークリックを使用した並べ替えです(値を並べ替えるには、テーブルヘッダーをクリックする必要があります)。クリックせずに自動でやりたい。
それは私が私の小さなコードで使用したものです:
Table2.setPreferredScrollableViewportSize(Table2.getPreferredSize());
Table2.setAutoCreateRowSorter(true);
DefaultRowSorter sorter = ((DefaultRowSorter)Table2.getRowSorter());
ArrayList list = new ArrayList();
list.add( new RowSorter.SortKey(2, SortOrder.DESCENDING) );
sorter.setSortKeys(list);
sorter.sort();
JScrollPane scrollPane = new JScrollPane( Table2 );
getContentPane().add( scrollPane );
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 300);
frame.setVisible(true);
だから私はJTable
、getRowSorter
オプションを使用せずにこれを行う他の方法を考えようとしています。