code: public boolean handleAction (Object source, String action, Object arg)
      {
          Method method = null;
          Object[] args = null;
  
          try {
              // look for the appropriate method
              Method[] methods = getClass().getMethods();
              int mcount = methods.length;
  
              for (int i = 0; i < mcount; i++) {
                  if (methods[i].getName().equals(action) ||
                      // handle our old style of prepending "handle"
                      methods[i].getName().equals("handle" + action)) {
                      // see if we can generate the appropriate arguments
                      args = generateArguments(methods[i], source, arg);
                      // if we were able to, go ahead and use this method
                      if (args != null) {
                          method = methods[i];
                          break;
                      }
                  }
              }
  
          } catch (Exception e) {
              log.warning("Error searching for action handler method", "controller", this,
                          "action", action);
              return false;
          }
  
          try {
              if (method != null) {
                  method.invoke(this, args);
                  return true;
              } else {
                  return false;
              }
  
          } catch (Exception e) {
              log.warning("Error invoking action handler", "controller", this, "action", action, e);
              // even though we choked, we still "handled" the action
              return true;
          }
      }
docs: A version of {@link #handleAction(ActionEvent)} with the parameters
  broken out so that it can be used by non-Swing interface toolkits.