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 java.util.Vector; import javax.swing.ComboBoxModel; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.border.Border; import javax.swing.event.AncestorListener; import javax.swing.plaf.ComboBoxUI; import java.awt.Color; import java.awt.Container; import java.awt.Component; public class Main { public static JComboBox generateComboBoxFor(Object... objs) { Container c = search(objs, Container.class); ComboBoxModel model = null; Vector items = null; Object[] itms = null; Border border = search(objs, Border.class); Color color = search(objs, Color.class); ComboBoxUI ui = search(objs, ComboBoxUI.class); JComboBox combo = (model = search(objs, ComboBoxModel.class)) == null ? (items = search(objs, Vector.class)) == null ? new JComboBox(itms = search(objs, Object[].class)) : new JComboBox(items) : new JComboBox(model); if (border != null) combo.setBorder(border); if (ui != null) combo.setUI(ui); if (color != null) combo.setBackground(color); addJContainerListeners(combo, objs); addToContainer(c, combo); return combo; } 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 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); } private static void addToContainer(Container c, Component element) { if (c == null) return; c.add(element); } 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); } }