static A onClick(final A c, fO runnable) { if (c != null) swing { c.addMouseListener(new MouseAdapter { public void mouseClicked(MouseEvent e) { callF(runnable, e); } }); } ret c; } // re-interpreted for buttons static void onClick(JButton btn, final O runnable) { onEnter(btn, runnable); }