package org.csdgn.maru.listener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.Method; import javax.swing.JCheckBox; public class MagicCheckboxAdapter implements ActionListener { private Method fun; private Object obj; /** Method should take a single string element. */ public MagicCheckboxAdapter(Object obj, String methodName) { this.obj = obj; try { this.fun = obj.getClass().getMethod(methodName, boolean.class); } catch (NoSuchMethodException e) { try { this.fun = obj.getClass().getMethod(methodName, Boolean.class); } catch (Exception ex) { ex.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } /** Method should take a single string element. */ public MagicCheckboxAdapter(Class<?> clz, String methodName) { try { this.fun = clz.getMethod(methodName, boolean.class); } catch (NoSuchMethodException e) { try { this.fun = clz.getMethod(methodName, Boolean.class); } catch (Exception ex) { ex.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } /** Method should take a single string element. */ public MagicCheckboxAdapter(Object obj, Method m) { this.obj = obj; this.fun = m; } public void setObject(Object obj) { this.obj = obj; } @Override public void actionPerformed(ActionEvent e) { try { JCheckBox jchbx = (JCheckBox)e.getSource(); boolean select = jchbx.isSelected(); fun.invoke(obj, select); } catch(Exception ex) { ex.printStackTrace(); } } }