我有一个包含TableModel(我的所有数据)的JTable。 JTable有多个行和列。我需要随机洗牌。我明白我可以用
做到这一点Collections.shuffle(some list from TableModel);
但我不知道如何从现有的具有TableModel的JTable中获取列表。
关于某些人的建议,我试过这个
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);
但没有工作。
答案 0 :(得分:2)
这样的东西可以起作用吗?
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.getDataVector().sort((Object o1, Object o2) -> Math.random() > 0.5 ? -1 : 1);
model.fireTableDataChanged();
修改强>
对于Java-7
,由于.sort()
直到Java-8
才实现,因此第二个(可能更具可读性)选项可能是:
DefaultTableModel model = (DefaultTableModel) table.getModel();
Collections.shuffle(model.getDataVector());
model.fireTableDataChanged();
这无法恢复。