如何在Jtable中洗牌
How to shuffle in Jtable
我有一个 JTable,其中包含 TableModel(我所有的数据)。 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);
但是没用。
这样的东西能行吗?
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();
这无法还原。
我有一个 JTable,其中包含 TableModel(我所有的数据)。 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);
但是没用。
这样的东西能行吗?
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();
这无法还原。