// runnable can be a func(O o) {} receving the selected item static JList onDoubleClickThreaded(final JList list, final O r) { ret onDoubleClick(list, voidfunc(fS item) { thread-messagebox { callF(r, item); }}); } // runnable can be a func(O o) {} receving the selected row index static JTable onDoubleClickThreaded(final JTable table, final O r) { ret onDoubleClick(table, voidfunc(final int row) { thread-messagebox { callF(r, row); }}); }