Listing 8: The method recursiveFindMLJComponents from MLUtils.java

private static Vector recursiveFindMLJComponents(Container r) {
  // java.awt.Container.getComponents() doesn't return null!
  Component[] tmp = r.getComponents();
  Vector v = new Vector();
  for (int i = 0; i < tmp.length; i++) {
    if (tmp[i] instanceof JComponent) {
      JComponent jcomp = (JComponent)tmp[i];
      if (jcomp.getComponentCount() == 0) {
        v.add(jcomp);
      }
      else {
        v.addAll(recursiveFindMLJComponents(jcomp));
      }
    }
    else if (tmp[i] instanceof Container) {
      v.addAll(recursiveFindMLJComponents((Container)tmp[i]));
    }
  }
  return v;
}
— End of Listing —