svoid onTableSelectionChangedAndNow(final JTable table, final Runnable r) { swing { table.getSelectionModel().addListSelectionListener(new ListSelectionListener { public void valueChanged(ListSelectionEvent e) { // swingLater helps us avoid spurios selection changes during table updates swingLater(r); } }); callF(r); } }