私はTableModel(私のすべてのデータ)を含むJTableを持っています。 JTableには複数の行と列があります。私はランダムに行をシャッフルする必要があります。私はJtableでシャッフルする方法
Collections.shuffle(some list from TableModel);
であることを行うことができます理解しかし、私はのTableModelを持っていた既存のJTableからリストを取得する方法を知りません。 somebodies提案に
、私はこの
RowSorter<? extends TableModel> sorter = mDocListTable.getRowSorter();
ArrayList<RowSorter.SortKey> list = new ArrayList<RowSorter.SortKey>();
list.add(new RowSorter.SortKey(0, SortOrder.DESCENDING));
Collections.shuffle(list);
sorter.setSortKeys(list);
が、didntの仕事を試してみました。
カスタム['RowSorter'](https://docs.oracle.com/javase/7/docs/api/javax/swing/RowSorter.html)を作成する方法があると思います。 'RowSorter'は列ヘッダーをソートキーとして使用する目的で設計されているので、必ずしも必要ではないオーバーヘッドがありますが、' convertRowIndexToModel(int index) 'メソッドと' convertRowIndexToView(int index) 'メソッドは、あなたがしたいことをしなさい。単純に、整数リスト '[0、1、...、getRowCount()]'を同じ整数にマッピングして作成しましたが、シャッフルされました。ビュー変換メソッドは、マップされた値を返します。 – Ironcache
実際にモデルのテーブルを(ビューだけでなく)変更したいのであれば、[DefaultTableModel'](https:// docs。)で 'moveRow(int start、int end、int to)'を使うこともできます。 oracle.com/javase/7/docs/api/javax/swing/table/DefaultTableModel.html)。 – Ironcache
"単純に整数のリスト[0,1、...、getRowCount()]のマッピングを同じ整数に作成してシャッフルしてみてください"小さな例が役に立ちます – user1631306