static void setTableModel(final JTable table, final TableModel model) { swing { Map widths = tableColumnWidthsByName(table); int[] i = table.getSelectedRows(); table.setModel(model); int n = model.getRowCount(); ListSelectionModel sel = table.getSelectionModel(); for (int j = 0; j < i.length; j++) if (i[j] < n) sel.addSelectionInterval(i[j], i[j]); tableSetColumnPreferredWidths(table, widths); } }