Java tutorial
//package com.java2s; //License from project: Open Source License import java.awt.event.ComponentListener; import java.awt.event.ContainerListener; import java.awt.event.FocusListener; import java.awt.event.HierarchyBoundsListener; import java.awt.event.HierarchyListener; import java.awt.event.InputMethodListener; import java.awt.event.KeyListener; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.MouseWheelListener; import java.beans.PropertyChangeListener; import java.beans.VetoableChangeListener; import javax.swing.JComponent; import javax.swing.event.AncestorListener; import javax.swing.event.CaretListener; import java.awt.Container; import java.awt.Component; import javax.swing.text.JTextComponent; public class Main { private static void addJTextComponentListeners(JTextComponent c, Object... objs) { if (c == null) return; addJContainerListeners(c, objs); CaretListener caretListener = search(objs, CaretListener.class); InputMethodListener inputMethodListener = search(objs, InputMethodListener.class); if (caretListener != null) c.addCaretListener(caretListener); if (inputMethodListener != null) c.addInputMethodListener(inputMethodListener); } private static void addJContainerListeners(JComponent c, Object... objs) { if (c == null) return; addContainerListeners(c, objs); AncestorListener ancestorListener = search(objs, AncestorListener.class); VetoableChangeListener vetoableChangeListener = search(objs, VetoableChangeListener.class); if (ancestorListener != null) c.addAncestorListener(ancestorListener); if (vetoableChangeListener != null) c.addVetoableChangeListener(vetoableChangeListener); } public static <T extends Component> T search(String name, Component comp) { if (name.equals(comp.getName())) { return (T) comp; } else if (comp instanceof Container) { for (Component c : ((Container) comp).getComponents()) if ((c = search(name, c)) != null) return (T) c; } return null; } private static <T> T search(Object[] objs, Class c) { for (Object o : objs) { if (c.isInstance(o)) return (T) o; } return null; } private static void addContainerListeners(Container c, Object... objs) { if (c == null) return; addComponentListeners(c, objs); ContainerListener containerListener = search(objs, ContainerListener.class); PropertyChangeListener propertyChangeListener = search(objs, PropertyChangeListener.class); if (containerListener != null) c.addContainerListener(containerListener); if (propertyChangeListener != null) c.addPropertyChangeListener(propertyChangeListener); } private static void addComponentListeners(Component c, Object... objs) { if (c == null) return; ComponentListener componentListener = search(objs, ComponentListener.class); FocusListener focusListener = search(objs, FocusListener.class); HierarchyBoundsListener hierarchyBoundsListener = search(objs, HierarchyBoundsListener.class); HierarchyListener hierarchyListener = search(objs, HierarchyListener.class); InputMethodListener inputMethodListener = search(objs, InputMethodListener.class); KeyListener keyListener = search(objs, KeyListener.class); MouseListener mouseListener = search(objs, MouseListener.class); MouseMotionListener mouseMotionListener = search(objs, MouseMotionListener.class); MouseWheelListener mouseWheelListener = search(objs, MouseWheelListener.class); if (componentListener != null) c.addComponentListener(componentListener); if (focusListener != null) c.addFocusListener(focusListener); if (hierarchyBoundsListener != null) c.addHierarchyBoundsListener(hierarchyBoundsListener); if (hierarchyListener != null) c.addHierarchyListener(hierarchyListener); if (inputMethodListener != null) c.addInputMethodListener(inputMethodListener); if (keyListener != null) c.addKeyListener(keyListener); if (mouseListener != null) c.addMouseListener(mouseListener); if (mouseMotionListener != null) c.addMouseMotionListener(mouseMotionListener); if (mouseWheelListener != null) c.addMouseWheelListener(mouseWheelListener); } }