なぜ次のコードはjava.lang.ArrayIndexOutOfBoundsException: 0 >= 0
になりますか?JTable ArrayIndexOutOfBoundsException
JTable oTable = new JTable();
for (int row = 0; row < table.getRowCount(); row++) {
for (int column = 0; column < table.getColumnCount(); column++) {
oTable.setValueAt(table.getValueAt(row, column), row, column);
}
}
テーブルはSortKeysを使用してソートされています。 SortKeysを実行すると、GUIのビューは更新されますが、基礎となるデータ(モデル)は変更されません。基になるモデルを変更するか、ビューからのデータを使って新しいテーブルを作成する必要があります。
DefaultTableModel model = (DefaultTableModel) table.getModel();
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
table.setRowSorter(sorter);
List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(model.findColumn("col title"), SortOrder.DESCENDING));
sortKeys.add(new RowSorter.SortKey(model.findColumn("col title 2"), SortOrder.DESCENDING));
sortKeys.add(new RowSorter.SortKey(model.findColumn("another col title"), SortOrder.DESCENDING));
sorter.setSortKeys(sortKeys); //this should trigger a .sort()
モデルが更新されない理由はわかりませんが、わかりません。
次の2つの独立したJTableの変数、 'oTable'と' table'を持っているように見えますので、非常に紛らわしい質問。 oTable変数だけを使うべきです。 –
1)EDTでGUI関連の問題を実行します。 2)すぐにより良い助けを得るために、[SSCCE](http://sscce.org/)を投稿してください。 –
を入力し、スタックトレースを例外 – andersoj