Java by API/javax.swing/JComboBox

Материал из Java эксперт
Перейти к: навигация, поиск

implements JComboBox.KeySelectionManager

  
import javax.swing.ruboBoxModel;
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "A", "A", "B", "B", "C", "C" };
    JComboBox cb = new JComboBox(items);
    cb.setKeySelectionManager(new MyKeySelectionManager());
  }
}
class MyKeySelectionManager implements JComboBox.KeySelectionManager {
  long lastKeyTime = 0;
  String pattern = "";
  public int selectionForKey(char aKey, ComboBoxModel model) {
    return 1;
  }
}





JComboBox: addActionListener(ActionListener lis)

  
import java.awt.BorderLayout;
import java.awt.ItemSelectable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass {
  public static void main(final String args[]) {
    final String labels[] = { "A", "B", "C", "D", "E" };
    JFrame frame = new JFrame("Selecting JComboBox");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JComboBox comboBox = new JComboBox(labels);
    frame.add(comboBox, BorderLayout.SOUTH);
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("Command: " + actionEvent.getActionCommand());
        ItemSelectable is = (ItemSelectable)actionEvent.getSource();
        System.out.println(", Selected: " + selectedString(is));
      }
    };
    comboBox.addActionListener(actionListener);
    frame.setSize(400, 200);
    frame.setVisible(true);
  }
  static private String selectedString(ItemSelectable is) {
    Object selected[] = is.getSelectedObjects();
    return ((selected.length == 0) ? "null" : (String)selected[0]);
  }  
}





JComboBox: addItemListener(ItemListener lis)

  
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel implements ItemListener {
  public MainClass() {
      JComboBox jc = new JComboBox(); 
      jc.addItem("France"); 
      jc.addItem("Germany"); 
      jc.addItem("Italy"); 
      jc.addItem("Japan"); 
      jc.addItemListener(this); 
      add(jc); 
  }
  public void itemStateChanged(ItemEvent ie) {
      String s = (String)ie.getItem(); 
      System.out.println(s); 
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}





JComboBox: addItem(Object o)

  
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel implements ItemListener {
  public MainClass() {
      JComboBox jc = new JComboBox(); 
      jc.addItem("France"); 
      jc.addItem("Germany"); 
      jc.addItem("Italy"); 
      jc.addItem("Japan"); 
      jc.addItemListener(this); 
      add(jc); 
  }
  public void itemStateChanged(ItemEvent ie) {
      String s = (String)ie.getItem(); 
      System.out.println(s); 
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}





JComboBox: addPopupMenuListener(PopupMenuListener l)

  
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.ruboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
public class Main {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Popup Menu Listener");
    Container contentPane = frame.getContentPane();
    final String flavors[] = { "Item 1", "Item 2", "Item 3"};
    PopupMenuListener listener = new PopupMenuListener() {
      boolean initialized = false;
      public void popupMenuCanceled(PopupMenuEvent e) {
      }
      public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
      }
      public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
        if (!initialized) {
          JComboBox combo = (JComboBox) e.getSource();
          ComboBoxModel model = new DefaultComboBoxModel(flavors);
          combo.setModel(model);
          initialized = true;
        }
      }
    };
    JComboBox jc = new JComboBox();
    jc.addPopupMenuListener(listener);
    jc.setMaximumRowCount(4);
    jc.setEditable(true);
    contentPane.add(jc, BorderLayout.NORTH);
    frame.pack();
    frame.setVisible(true);
  }
}





JComboBox: getActionMap()

  
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.ruboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.plaf.ruboBoxUI;
public class MainClass extends JFrame {
  JComboBox jcb;
  MainClass(String title) {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel jp = new JPanel();
    Vector v = new Vector();
    v.add("A");
    v.add("B");
    v.add("C");
    jcb = new JComboBox(v);
    jcb.setEditable(true);
    jcb.getActionMap().put("selectNext", new DownAction());
    jp.setPreferredSize(new Dimension(200, 35));
    jp.add(jcb);
    getContentPane().add(jp);
    pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new MainClass("Binding Demo3");
  }
}
class DownAction extends AbstractAction {
  public void actionPerformed(ActionEvent e) {
    JComboBox jcb = (JComboBox) e.getSource();
    System.out.println("down action");
    ComboBoxUI ui = jcb.getUI();
    if (ui.isPopupVisible(jcb)) {
      int i = jcb.getSelectedIndex();
      if (i < jcb.getModel().getSize() - 1) {
        jcb.setSelectedIndex(i + 1);
        jcb.repaint();
      }
    } else {
      int nItems = jcb.getItemCount();
      ComboBoxEditor cbe = jcb.getEditor();
      String st; // Search text
      st = ((String) cbe.getItem()).toUpperCase();
      for (int i = 0; i < nItems; i++) {
        String item = ((String) jcb.getItemAt(i)).toUpperCase();
        if (item.startsWith(st)) {
          jcb.setSelectedIndex(i);
          break;
        }
      }
      ui.setPopupVisible(jcb, true);
    }
  }
}





JComboBox: getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)

  
import java.awt.Dimension;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.ruboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class MainClass extends JFrame {
  JComboBox jcb;
  MainClass(String title) {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel jp = new JPanel();
    Vector v = new Vector();
    v.add("A");
    v.add("B");
    v.add("C");
    jcb = new JComboBox(v);
    jcb.setEditable(true);
    KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, Event.CTRL_MASK);
    jcb.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ks, "clearEditor");
    jcb.getActionMap().put("clearEditor", new ClearEditorAction());
    jp.setPreferredSize(new Dimension(200, 35));
    jp.add(jcb);
    getContentPane().add(jp);
    pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new MainClass("Binding Demo3");
  }
}
class ClearEditorAction extends AbstractAction {
  public void actionPerformed(ActionEvent e) {
    JComboBox jcb = (JComboBox) e.getSource();
    ComboBoxEditor cbe = jcb.getEditor();
    cbe.setItem("");
  }
}





JComboBox: getItemAt(int index)

  

import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2", "item3" };
    JComboBox cb = new JComboBox(items);
    // Get number of items
    int num = cb.getItemCount();
    // Get items
    for (int i = 0; i < num; i++) {
      Object item = cb.getItemAt(i);
    }
  }
}





JComboBox: getItemCount()

  
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.ruboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.plaf.ruboBoxUI;
public class MainClass extends JFrame {
  JComboBox jcb;
  MainClass(String title) {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel jp = new JPanel();
    Vector v = new Vector();
    v.add("A");
    v.add("B");
    v.add("C");
    jcb = new JComboBox(v);
    jcb.setEditable(true);
    jcb.getActionMap().put("selectNext", new DownAction());
    jp.setPreferredSize(new Dimension(200, 35));
    jp.add(jcb);
    getContentPane().add(jp);
    pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new MainClass("Binding Demo3");
  }
}
class DownAction extends AbstractAction {
  public void actionPerformed(ActionEvent e) {
    JComboBox jcb = (JComboBox) e.getSource();
    System.out.println("down action");
    ComboBoxUI ui = jcb.getUI();
    if (ui.isPopupVisible(jcb)) {
      int i = jcb.getSelectedIndex();
      if (i < jcb.getModel().getSize() - 1) {
        jcb.setSelectedIndex(i + 1);
        jcb.repaint();
      }
    } else {
      int nItems = jcb.getItemCount();
      ComboBoxEditor cbe = jcb.getEditor();
      String st; // Search text
      st = ((String) cbe.getItem()).toUpperCase();
      for (int i = 0; i < nItems; i++) {
        String item = ((String) jcb.getItemAt(i)).toUpperCase();
        if (item.startsWith(st)) {
          jcb.setSelectedIndex(i);
          break;
        }
      }
      ui.setPopupVisible(jcb, true);
    }
  }
}





JComboBox: getKeySelectionManager()

  

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "A", "A", "B", "B", "C" };
    JComboBox cb = new JComboBox(items);
    cb.addKeyListener(new MyKeyListener());
  }
}
class MyKeyListener extends KeyAdapter {
  public void keyPressed(KeyEvent evt) {
    JComboBox cb = (JComboBox) evt.getSource();
    int curIx = cb.getSelectedIndex();
    char ch = evt.getKeyChar();
    JComboBox.KeySelectionManager ksm = cb.getKeySelectionManager();
    if (ksm != null) {
      int ix = ksm.selectionForKey(ch, cb.getModel());
      boolean noMatch = ix < 0;
      boolean uniqueItem = ix == curIx;
      if (noMatch || !uniqueItem) {
        cb.showPopup();
      }
    }
  }
}





JComboBox: getSelectedIndex()

  
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass {
  public static void main(final String args[]) {
    final String labels[] = { "A", "B", "C", "D", "E" };
    JFrame frame = new JFrame("Editable JComboBox");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JComboBox comboBox = new JComboBox(labels);
    comboBox.setMaximumRowCount(5);
    comboBox.setEditable(true);
    frame.add(comboBox, BorderLayout.NORTH);
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("Selected: " + comboBox.getSelectedItem());
        System.out.println(", Position: " + comboBox.getSelectedIndex());
      }
    };
    comboBox.addActionListener(actionListener);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}





JComboBox: getSelectedItem()

  
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass {
  public static void main(final String args[]) {
    final String labels[] = { "A", "B", "C", "D", "E" };
    JFrame frame = new JFrame("Editable JComboBox");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JComboBox comboBox = new JComboBox(labels);
    comboBox.setMaximumRowCount(5);
    comboBox.setEditable(true);
    frame.add(comboBox, BorderLayout.NORTH);
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("Selected: " + comboBox.getSelectedItem());
        System.out.println(", Position: " + comboBox.getSelectedIndex());
      }
    };
    comboBox.addActionListener(actionListener);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}





JComboBox: insertItemAt(Object anObject, int index)

  
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2" };
    JComboBox cb = new JComboBox(items);
    // Add an item to the start of the list
    cb.insertItemAt("item0", 0);
  }
}





JComboBox: isPopupVisible()

  
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2" };
    JComboBox cb = new JComboBox(items);
    // Determine if the menu is visible
    boolean isVisible = cb.isPopupVisible();
  }
}





JComboBox: removeAllItems()

  
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2" };
    JComboBox cb = new JComboBox(items);
    cb.removeAllItems();
  }
}





JComboBox: removeItemAt(int anIndex)

  
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2" };
    JComboBox cb = new JComboBox(items);
    cb.removeItemAt(0);
  }
}





JComboBox: setEditable(boolean b)

  
import java.awt.BorderLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass {
  public static void main(final String args[]) {
    String labels[] = { "A", "B", "C", "D", "E" };
    final DefaultComboBoxModel model = new DefaultComboBoxModel(labels);
    JFrame frame = new JFrame("Shared Data");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    JComboBox comboBox1 = new JComboBox(model);
    comboBox1.setMaximumRowCount(5);
    comboBox1.setEditable(true);
    JComboBox comboBox2 = new JComboBox(model);
    comboBox2.setMaximumRowCount(5);
    comboBox2.setEditable(true);
    panel.add(comboBox1);
    panel.add(comboBox2);
    frame.add(panel, BorderLayout.NORTH);

    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}





JComboBox: setEditor(ComboBoxEditor anEditor)

  
import java.awt.BorderLayout;
import java.awt.ruponent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ruboBoxEditor;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
public class MainClass extends JPanel {
  private IconItem items[] = { new IconItem("A", "A.gif"),
      new IconItem("B", "B.gif"),
      new IconItem("C", "C.gif") };
  Map itemMap = new HashMap();
  public MainClass() {
    // Build a mapping from book titles to their entries
    for (int i = 0; i < items.length; i++) {
      itemMap.put(items[i].getTitle(), items[i]);
    }
    setLayout(new BorderLayout());
    JComboBox bookCombo = new JComboBox(items);
    bookCombo.setEditable(true);
    bookCombo.setEditor(new MyComboBoxEditor(itemMap, items[0]));
    bookCombo.setMaximumRowCount(4);
    bookCombo.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println("You chose " + ((JComboBox) e.getSource()).getSelectedItem() + "!");
      }
    });
    bookCombo.setActionCommand("Hello");
    add(bookCombo, BorderLayout.CENTER);
  }
  public static void main(String s[]) {
    JFrame frame = new JFrame("Combo Box Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new MainClass());
    frame.pack();
    frame.setVisible(true);
  }
}
class IconItem {
  private final String title;
  private final String imagePath;
  private ImageIcon image;
  public IconItem(String title, String imagePath) {
    this.title = title;
    this.imagePath = imagePath;
  }
  public String getTitle() {
    return title;
  }
  public ImageIcon getImage() {
    if (image == null) {
      image = new ImageIcon(imagePath);
    }
    return image;
  }
  // Override standard toString method to give a useful result
  public String toString() {
    return title;
  }
}
class MyComboBoxEditor implements ComboBoxEditor {
  Map map;
  ImagePanel panel;
  ImageIcon questionIcon;
  public MyComboBoxEditor(Map m, IconItem defaultChoice) {
    map = m;
    panel = new ImagePanel(defaultChoice);
    questionIcon = new ImageIcon("question.gif");
  }
  public void setItem(Object anObject) {
    if (anObject != null) {
      panel.setText(anObject.toString());
      IconItem entry = (IconItem) map.get(anObject.toString());
      if (entry != null)
        panel.setIcon(entry.getImage());
      else
        panel.setIcon(questionIcon);
    }
  }
  public Component getEditorComponent() {
    return panel;
  }
  public Object getItem() {
    return panel.getText();
  }
  public void selectAll() {
    panel.selectAll();
  }
  public void addActionListener(ActionListener l) {
    panel.addActionListener(l);
  }
  public void removeActionListener(ActionListener l) {
    panel.removeActionListener(l);
  }
  class ImagePanel extends JPanel {
    JLabel imageIconLabel;
    JTextField textField;
    public ImagePanel(IconItem initialEntry) {
      setLayout(new BorderLayout());
      imageIconLabel = new JLabel(initialEntry.getImage());
      imageIconLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
      textField = new JTextField(initialEntry.getTitle());
      textField.setColumns(45);
      textField.setBorder(new BevelBorder(BevelBorder.LOWERED));
      add(imageIconLabel, BorderLayout.WEST);
      add(textField, BorderLayout.EAST);
    }
    public void setText(String s) {
      textField.setText(s);
    }
    public String getText() {
      return (textField.getText());
    }
    public void setIcon(Icon i) {
      imageIconLabel.setIcon(i);
      repaint();
    }
    public void selectAll() {
      textField.selectAll();
    }
    public void addActionListener(ActionListener l) {
      textField.addActionListener(l);
    }
    public void removeActionListener(ActionListener l) {
      textField.removeActionListener(l);
    }
  }
}





JComboBox: setKeySelectionManager(KeySelectionManager aManager)

  
import javax.swing.ruboBoxModel;
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "A", "A", "B", "B", "C", "C" };
    JComboBox cb = new JComboBox(items);
    cb.setKeySelectionManager(new MyKeySelectionManager());
  }
}
class MyKeySelectionManager implements JComboBox.KeySelectionManager {
  long lastKeyTime = 0;
  String pattern = "";
  public int selectionForKey(char aKey, ComboBoxModel model) {
    return 1;
  }
}





JComboBox: setMaximumRowCount(int count)

  
import java.awt.BorderLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass {
  public static void main(final String args[]) {
    String labels[] = { "A", "B", "C", "D", "E" };
    final DefaultComboBoxModel model = new DefaultComboBoxModel(labels);
    JFrame frame = new JFrame("Shared Data");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    JComboBox comboBox1 = new JComboBox(model);
    comboBox1.setMaximumRowCount(5);
    comboBox1.setEditable(true);
    JComboBox comboBox2 = new JComboBox(model);
    comboBox2.setMaximumRowCount(5);
    comboBox2.setEditable(true);
    panel.add(comboBox1);
    panel.add(comboBox2);
    frame.add(panel, BorderLayout.NORTH);

    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}





JComboBox: setRenderer(ListCellRenderer aRenderer)

  
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class MainClass {
  public static void main(String args[]) throws Exception {
    Color colors[] = { Color.GREEN, Color.ORANGE, Color.PINK, Color.RED,
        Color.WHITE, Color.YELLOW };
    JFrame frame = new JFrame("Color JComboBox");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JComboBox comboBox = new JComboBox(colors);
    comboBox.setMaximumRowCount(5);
    comboBox.setEditable(true);
    comboBox.setRenderer(new ColorCellRenderer());
    frame.add(comboBox, BorderLayout.NORTH);
    final JLabel label = new JLabel();
    label.setOpaque(true);
    label.setBackground((Color) comboBox.getSelectedItem());
    frame.add(label, BorderLayout.CENTER);
    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        Color selectedColor = (Color) comboBox.getSelectedItem();
        label.setBackground(selectedColor);
      }
    };
    comboBox.addActionListener(actionListener);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}
class ColorCellRenderer implements ListCellRenderer {
  protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
  private final static Dimension preferredSize = new Dimension(0, 20);
  public Component getListCellRendererComponent(JList list, Object value, int index,
      boolean isSelected, boolean cellHasFocus) {
    JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
        isSelected, cellHasFocus);
    if (value instanceof Color) {
      renderer.setBackground((Color) value);
    }
    renderer.setPreferredSize(preferredSize);
    return renderer;
  }
}





JComboBox: setSelectedIndex(int anIndex)

  
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.ruboBoxEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.plaf.ruboBoxUI;
public class MainClass extends JFrame {
  JComboBox jcb;
  MainClass(String title) {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel jp = new JPanel();
    Vector v = new Vector();
    v.add("A");
    v.add("B");
    v.add("C");
    jcb = new JComboBox(v);
    jcb.setEditable(true);
    jcb.getActionMap().put("selectNext", new DownAction());
    jp.setPreferredSize(new Dimension(200, 35));
    jp.add(jcb);
    getContentPane().add(jp);
    pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new MainClass("Binding Demo3");
  }
}
class DownAction extends AbstractAction {
  public void actionPerformed(ActionEvent e) {
    JComboBox jcb = (JComboBox) e.getSource();
    System.out.println("down action");
    ComboBoxUI ui = jcb.getUI();
    if (ui.isPopupVisible(jcb)) {
      int i = jcb.getSelectedIndex();
      if (i < jcb.getModel().getSize() - 1) {
        jcb.setSelectedIndex(i + 1);
        jcb.repaint();
      }
    } else {
      int nItems = jcb.getItemCount();
      ComboBoxEditor cbe = jcb.getEditor();
      String st; // Search text
      st = ((String) cbe.getItem()).toUpperCase();
      for (int i = 0; i < nItems; i++) {
        String item = ((String) jcb.getItemAt(i)).toUpperCase();
        if (item.startsWith(st)) {
          jcb.setSelectedIndex(i);
          break;
        }
      }
      ui.setPopupVisible(jcb, true);
    }
  }
}





JComboBox: setSelectedItem(Object anObject)

  
import javax.swing.JComboBox;
public class Main {
  public static void main(String[] argv) throws Exception {
    String[] items = { "item1", "item2" };
    JComboBox cb = new JComboBox(items);
    Object obj = cb.getSelectedItem(); 
    cb.setSelectedItem("item2");
    obj = cb.getSelectedItem(); 
    cb.setSelectedItem("item3");
    obj = cb.getSelectedItem(); 
  }
}





JComboBox: setUI(ComboBoxUI ui)

  
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.plaf.ruboBoxUI;
import javax.swing.plaf.ruponentUI;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicComboBoxUI;
public class MainClass {
  public static void main(final String args[]) {
    final String labels[] = { "A", "B", "C", "D", "E" };
    JFrame frame = new JFrame("Popup JComboBox");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JComboBox comboBox = new JComboBox(labels);
    comboBox.setUI((ComboBoxUI) MyComboBoxUI.createUI(comboBox));
    frame.add(comboBox, BorderLayout.NORTH);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
  static class MyComboBoxUI extends BasicComboBoxUI {
    public static ComponentUI createUI(JComponent c) {
      return new MyComboBoxUI();
    }
    protected JButton createArrowButton() {
      JButton button = new BasicArrowButton(BasicArrowButton.EAST);
      return button;
    }
  }
}





new JComboBox()

  
import java.awt.Color;
import java.awt.ruponent;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass extends JPanel implements ItemListener {
  public MainClass() {
      JComboBox jc = new JComboBox(); 
      jc.addItem("France"); 
      jc.addItem("Germany"); 
      jc.addItem("Italy"); 
      jc.addItem("Japan"); 
      jc.addItemListener(this); 
      add(jc); 
  }
  public void itemStateChanged(ItemEvent ie) {
      String s = (String)ie.getItem(); 
      System.out.println(s); 
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}





new JComboBox(ComboBoxModel aModel)

  
import java.awt.BorderLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainClass {
  public static void main(final String args[]) {
    String labels[] = { "A", "B", "C", "D", "E" };
    final DefaultComboBoxModel model = new DefaultComboBoxModel(labels);
    JFrame frame = new JFrame("Shared Data");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    JComboBox comboBox1 = new JComboBox(model);
    comboBox1.setMaximumRowCount(5);
    comboBox1.setEditable(true);
    JComboBox comboBox2 = new JComboBox(model);
    comboBox2.setMaximumRowCount(5);
    comboBox2.setEditable(true);
    panel.add(comboBox1);
    panel.add(comboBox2);
    frame.add(panel, BorderLayout.NORTH);

    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}





new JComboBox(Vector items)

  
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass extends JFrame {
  MainClass(String title) {
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Vector v = new Vector();
    v.add("A");
    v.add("B");
    v.add("C");
    JComboBox jcb = new JComboBox(v);
    getContentPane().add(jcb);
    setSize(200, 50);
    setVisible(true);
  }
  public static void main(String[] args) {
    new MainClass("Combo box Demo1");
  }
}