Java Tutorial/Swing/JComboBox

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

Содержание

A Color Combo Box Editor

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.ruponent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ruboBoxEditor; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.event.EventListenerList; class ColorComboBoxEditor implements ComboBoxEditor {

 final protected JButton editor;
 protected EventListenerList listenerList = new EventListenerList();
 public ColorComboBoxEditor(Color initialColor) {
   editor = new JButton("");
   editor.setBackground(initialColor);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       Color currentBackground = editor.getBackground();
       Color color = JColorChooser.showDialog(editor, "Color Chooser", currentBackground);
       if ((color != null) && (currentBackground != color)) {
         editor.setBackground(color);
         fireActionEvent(color);
       }
     }
   };
   editor.addActionListener(actionListener);
 }
 public void addActionListener(ActionListener l) {
   listenerList.add(ActionListener.class, l);
 }
 public Component getEditorComponent() {
   return editor;
 }
 public Object getItem() {
   return editor.getBackground();
 }
 public void removeActionListener(ActionListener l) {
   listenerList.remove(ActionListener.class, l);
 }
 public void selectAll() {
   // Ignore
 }
 public void setItem(Object newValue) {
   if (newValue instanceof Color) {
     Color color = (Color) newValue;
     editor.setBackground(color);
   } else {
     try {
       Color color = Color.decode(newValue.toString());
       editor.setBackground(color);
     } catch (NumberFormatException e) {
     }
   }
 }
 protected void fireActionEvent(Color color) {
   Object listeners[] = listenerList.getListenerList();
   for (int i = listeners.length - 2; i >= 0; i -= 2) {
     if (listeners[i] == ActionListener.class) {
       ActionEvent actionEvent = new ActionEvent(editor, ActionEvent.ACTION_PERFORMED, color
           .toString());
       ((ActionListener) listeners[i + 1]).actionPerformed(actionEvent);
     }
   }
 }

} public class ColorComboBoxEditorDemo {

 public static void main(String args[]) {
   Color colors[] = { Color.RED, Color.BLUE, Color.BLACK, Color.WHITE };
   JFrame frame = new JFrame("Editable JComboBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   final JComboBox comboBox = new JComboBox(colors);
   comboBox.setEditable(true);
   comboBox.setEditor(new ColorComboBoxEditor(Color.RED));
   frame.add(comboBox, BorderLayout.NORTH);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Add an item after the first item

   <source lang="java">

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.insertItemAt("item0.5", 1);
 }

}</source>





Add an item to the end of the list

   <source lang="java">

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.addItem("item3");
 }

}</source>





Adding and Removing an Item in a JComboBox Component

   <source lang="java">

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);
 }

}</source>





Add Items to JComboBox

   <source lang="java">

import javax.swing.JComboBox; import javax.swing.JFrame; public class AddingItemToComboBox {

 public static void main(String[] a) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JComboBox jComboBox1 = new JComboBox();
   jComboBox1.addItem("asdf");
   Object cmboitem = jComboBox1.getSelectedItem();
   System.out.println(cmboitem);
   frame.add(jComboBox1);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Combobox cell renderer

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.ruponent; import java.awt.Font; import java.awt.Graphics; import javax.swing.DefaultListCellRenderer; import javax.swing.Icon; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; class ComplexCellRenderer implements ListCellRenderer {

 protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
 public Component getListCellRendererComponent(JList list, Object value, int index,
     boolean isSelected, boolean cellHasFocus) {
   Font theFont = null;
   Color theForeground = null;
   Icon theIcon = null;
   String theText = null;
   JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
       isSelected, cellHasFocus);
   if (value instanceof Object[]) {
     Object values[] = (Object[]) value;
     theFont = (Font) values[0];
     theForeground = (Color) values[1];
     theIcon = (Icon) values[2];
     theText = (String) values[3];
   } else {
     theFont = list.getFont();
     theForeground = list.getForeground();
     theText = "";
   }
   if (!isSelected) {
     renderer.setForeground(theForeground);
   }
   if (theIcon != null) {
     renderer.setIcon(theIcon);
   }
   renderer.setText(theText);
   renderer.setFont(theFont);
   return renderer;
 }

} public class ComplexRenderingSample {

 public static void main(String args[]) {
   Object elements[][] = {
       { new Font("Helvetica", Font.PLAIN, 20), Color.RED, new MyIcon(), "A" },
       { new Font("TimesRoman", Font.BOLD, 14), Color.BLUE, new MyIcon(), "A" },
       { new Font("Courier", Font.ITALIC, 18), Color.GREEN, new MyIcon(), "A" },
       { new Font("Helvetica", Font.BOLD | Font.ITALIC, 12), Color.GRAY, new MyIcon(), "A" },
       { new Font("TimesRoman", Font.PLAIN, 32), Color.PINK, new MyIcon(), "A" },
       { new Font("Courier", Font.BOLD, 16), Color.YELLOW, new MyIcon(), "A" },
       { new Font("Helvetica", Font.ITALIC, 8), Color.DARK_GRAY, new MyIcon(), "A" } };
   JFrame frame = new JFrame("Complex Renderer");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   ListCellRenderer renderer = new ComplexCellRenderer();
   JComboBox comboBox = new JComboBox(elements);
   comboBox.setRenderer(renderer);
   frame.add(comboBox, BorderLayout.NORTH);
   
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

} class MyIcon implements Icon {

 public MyIcon() {
 }
 public int getIconHeight() {
   return 20;
 }
 public int getIconWidth() {
   return 20;
 }
 public void paintIcon(Component c, Graphics g, int x, int y) {
   g.setColor(Color.RED);
   g.drawRect(0, 0, 25, 25);
 }

}</source>





Creating JComboBox Components

   <source lang="java">

public JComboBox() JComboBox comboBox = new JComboBox(); public JComboBox(Object listData[]) String labels[] = { "A", "B", "C", "D", "E"}; JComboBox comboBox = new JComboBox(labels); public JComboBox(Vector listData) Vector vector = aBufferedImage.getSources(); JComboBox comboBox = new JComboBox(vector); public JComboBox(ComboBoxModel model) ResultSet results = aJDBCStatement.executeQuery("SELECT columnName FROM tableName"); DefaultComboBoxModel model = new DefaultComboBoxModel(); while (result.next())

 model.addElement(results.getString(1));

JComboBox comboBox = new JComboBox(model);</source>





Customizing a JComboBox Look and Feel

Property StringObject TypeComboBox.actionMapActionMapComboBox.ancestorInputMapInputMapComboBox.backgroundColorComboBox.borderBorderComboBox.buttonBackgroundColorComboBox.buttonDarkShadowColorComboBox.buttonHighlightColorComboBox.buttonShadowColorComboBox.controlColorComboBox.controlForegroundColorComboBox.disabledBackgroundColorComboBox.disabledForegroundColorComboBox.fontFontComboBox.foregroundColorComboBox.rendererUseListColorsBooleanComboBox.selectionBackgroundColorComboBox.selectionForegroundColorComboBox.showPopupOnNavigationBooleanComboBox.timeFactorLongComboBox.togglePopupTextStringComboBoxUIString


Custom JComboBox Pop-up Button

   <source lang="java">

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 PopupComboSample {

 public static void main(String args[]) {
   String labels[] = { "A", "B", "C", "D", "E", "F", "G" };
   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;
   }
 }

}</source>





Determining If the Menu of a JComboBox Component Is Visible

   <source lang="java">

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();
 }

}</source>





Determining When the Menu of a JComboBox Component Is Displayed

   <source lang="java">

import javax.swing.JComboBox; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; public class Main {

 public static void main(String[] argv) throws Exception {
   String[] items = { "item1", "item2" };
   JComboBox cb = new JComboBox(items);
   cb.setEditable(true);
   MyPopupMenuListener actionListener = new MyPopupMenuListener();
   cb.addPopupMenuListener(actionListener);
 }

} class MyPopupMenuListener implements PopupMenuListener {

 public void popupMenuWillBecomeVisible(PopupMenuEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
 }
 public void popupMenuWillBecomeInvisible(PopupMenuEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
 }
 public void popupMenuCanceled(PopupMenuEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
 }

}</source>





Displaying the Menu in a JComboBox Component Using a Keystroke

   <source lang="java">

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", "C" };
   JComboBox cb = new JComboBox(items);
   // Create and register the key listener
   cb.addKeyListener(new MyKeyListener());
 }

} class MyKeyListener extends KeyAdapter {

 public void keyPressed(KeyEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
   // Get pressed character
   char ch = evt.getKeyChar();
   // If not a printable character, return
   if (ch != KeyEvent.CHAR_UNDEFINED) {
     cb.showPopup();
   }
 }

}</source>





Displaying the Menu in a JComboBox Component Using a Keystroke If the Selected Item Is Not Unique

   <source lang="java">

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);
   // Create and register the key listener
   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) {
     // Determine if another item has the same prefix
     int ix = ksm.selectionForKey(ch, cb.getModel());
     boolean noMatch = ix < 0;
     boolean uniqueItem = ix == curIx;
     // Display menu if no matching items or the if the selection is not unique
     if (noMatch || !uniqueItem) {
       cb.showPopup();
     }
   }
 }

}</source>





Editable JComboBox

   <source lang="java">

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JComboBox; import javax.swing.JFrame; public class Main extends JFrame {

 JComboBox combo = new JComboBox();
 public Main() {
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   combo.addItem("A");
   combo.addItem("H");
   combo.addItem("P");
   combo.setEditable(true);
   System.out.println("#items=" + combo.getItemCount());
   combo.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       System.out.println("Selected index=" + combo.getSelectedIndex()
           + " Selected item=" + combo.getSelectedItem());
     }
   });
   getContentPane().add(combo);
   pack();
   setVisible(true);
 }
 public static void main(String arg[]) {
   new Main();
 }

}</source>





Editing JComboBox Elements

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; public class EditComboBox {

 public static void main(String args[]) {
   String labels[] = { "A", "B", "C", "D", "E", "F", "G" };
   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);
 }

}</source>





Get Model from JComboBox and set it to JList

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; public class Lister {

 public static void main(String[] args) {
   JFrame frame = new JFrame("Lister v1.0");
   String[] items = { "A", "B", "C" };
   JComboBox comboBox = new JComboBox(items);
   comboBox.setEditable(true);
   final JList list = new JList(comboBox.getModel());
   JButton button = new JButton("Per favore");
   button.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae) {
       Object[] selection = list.getSelectedValues();
       for (Object s : selection)
         System.out.println(s);
     }
   });
   JPanel comboPanel = new JPanel();
   comboPanel.add(comboBox);
   frame.add(comboPanel, BorderLayout.NORTH);
   frame.add(new JScrollPane(list), BorderLayout.CENTER);
   frame.add(button, BorderLayout.SOUTH);
   frame.setSize(200, 200);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
 }

}</source>





Get selected Item from JComboBox

   <source lang="java">

import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; public class GettingSettingSelectedItem {

 public static void main(String[] a) {
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton jButton1 = new JButton("Button");
   String[] mystring = { "Java", "JBuilder", "JFC", "Swing" };
   final JList jList1 = new JList(mystring);
   jButton1.addActionListener(new java.awt.event.ActionListener() {
     public void actionPerformed(ActionEvent e) {
       Object contents = jList1.getSelectedValue();
       System.out.println(contents);
     }
   });
   frame.add(jList1, "Center");
   frame.add(jButton1,"South");
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Getting and Setting the Selected Item in a JComboBox Component

   <source lang="java">

import javax.swing.JComboBox; public class Main {

 public static void main(String[] argv) throws Exception {
   String[] items = { "item1", "item2" };
   JComboBox cb = new JComboBox(items);
   // Get current value
   Object obj = cb.getSelectedItem(); 
   // Set a new value
   cb.setSelectedItem("item2");
   obj = cb.getSelectedItem(); 
   // If the new value is not in the list of valid items, the call is ignored
   cb.setSelectedItem("item3");
   obj = cb.getSelectedItem(); 
 }

}</source>





Getting the Items in a JComboBox Component

   <source lang="java">

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);
   }
 }

}</source>





If the combobox is editable, the new value can be any value

   <source lang="java">

import javax.swing.JComboBox; public class Main {

 public static void main(String[] argv) throws Exception {
   // Create a read-only combobox
   String[] items = { "item1", "item2" };
   JComboBox cb = new JComboBox(items);
   cb.setEditable(true);
   cb.setSelectedItem("item3");
   Object obj = cb.getSelectedItem(); 
 }

}</source>





JComboBox Using the Custom Model

   <source lang="java">

import javax.swing.AbstractListModel; import javax.swing.ruboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; class MyComboBoxModel extends AbstractListModel implements ComboBoxModel {

 String[] ComputerComps = { "Monitor", "Key Board", "Mouse", "Joy Stick", "Modem", "CD ROM",
     "RAM Chip", "Diskette" };
 String selection = null;
 public Object getElementAt(int index) {
   return ComputerComps[index];
 }
 public int getSize() {
   return ComputerComps.length;
 }
 public void setSelectedItem(Object anItem) {
   selection = (String) anItem; // to select and register an
 } // item from the pull-down list
 // Methods implemented from the interface ComboBoxModel
 public Object getSelectedItem() {
   return selection; // to add the selection to the combo box
 }

} public class JComboBoxModel {

 public static void main(String[] a){
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JComboBox cbox = new JComboBox(new MyComboBoxModel());  
   cbox.setMaximumRowCount(5);   
   frame.add(cbox);   
   
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>





Listening for Action Events from a JComboBox Component

   <source lang="java">

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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.setEditable(true);
   // Create and register listener
   MyActionListener actionListener = new MyActionListener();
   cb.addActionListener(actionListener);
 }

} class MyActionListener implements ActionListener {

 Object oldItem;
 public void actionPerformed(ActionEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
   Object newItem = cb.getSelectedItem();
   boolean same = newItem.equals(oldItem);
   oldItem = newItem;
   if ("comboBoxEdited".equals(evt.getActionCommand())) {
     // User has typed in a string; only possible with an editable combobox
   } else if ("comboBoxChanged".equals(evt.getActionCommand())) {
     // User has selected an item; it may be the same item
   }
 }

}</source>





Listening for Changes to the Selected Item in a JComboBox Component

   <source lang="java">

import java.awt.event.ItemEvent; import java.awt.event.ItemListener; 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.setEditable(true);
   MyItemListener actionListener = new MyItemListener();
   cb.addItemListener(actionListener);
 }

} class MyItemListener implements ItemListener {

 // This method is called only if a new item has been selected.
 public void itemStateChanged(ItemEvent evt) {
   JComboBox cb = (JComboBox) evt.getSource();
   Object item = evt.getItem();
   if (evt.getStateChange() == ItemEvent.SELECTED) {
     // Item was just selected
   } else if (evt.getStateChange() == ItemEvent.DESELECTED) {
     // Item is no longer selected
   }
 }

}</source>





Listening to Keyboard Events with a KeySelectionManager

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; import javax.swing.JFrame; public class SelectingComboSample {

 public static void main(String args[]) {
   String labels[] = { "A", "B", "C", "D", "E", "F" };
   JFrame frame = new JFrame("Selecting JComboBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JComboBox comboBox = new JComboBox(labels);
   frame.add(comboBox, BorderLayout.SOUTH);
   JComboBox.KeySelectionManager manager =
     new JComboBox.KeySelectionManager() {
       public int selectionForKey(char aKey, ComboBoxModel aModel) {
         System.out.println(aKey);
         return -1;
       }
     };
   comboBox.setKeySelectionManager(manager);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}</source>





Listen to JComboBox with ItemListener

You can listen with an ActionListener or an ItemListener to find out when the selected item of the JComboBox changes.



   <source lang="java">

import java.awt.BorderLayout; import java.awt.ItemSelectable; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JComboBox; import javax.swing.JFrame; public class ItemListenerSelectingComboSample {

 static private String selectedString(ItemSelectable is) {
   Object selected[] = is.getSelectedObjects();
   return ((selected.length == 0) ? "null" : (String) selected[0]);
 }
 public static void main(String args[]) {
   String labels[] = { "A", "B", "C", "D", "E", "F" };
   JFrame frame = new JFrame("Selecting JComboBox");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JComboBox comboBox = new JComboBox(labels);
   frame.add(comboBox, BorderLayout.SOUTH);
   ItemListener itemListener = new ItemListener() {
     public void itemStateChanged(ItemEvent itemEvent) {
       int state = itemEvent.getStateChange();
       System.out.println((state == ItemEvent.SELECTED) ? "Selected" : "Deselected");
       System.out.println("Item: " + itemEvent.getItem());
       ItemSelectable is = itemEvent.getItemSelectable();
       System.out.println(", Selected: " + selectedString(is));
     }
   };
   comboBox.addItemListener(itemListener);
   frame.setSize(400, 200);
   frame.setVisible(true);
 }

}</source>





Remove all items

   <source lang="java">

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();
 }

}</source>





Remove first item

   <source lang="java">

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);
 }

}</source>





Remove the last item

   <source lang="java">

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(cb.getItemCount() - 1);
 }

}</source>





Selecting an Item in a JComboBox Component with Multiple Keystrokes

   <source lang="java">

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) {
   int selIx = 01;
   Object sel = model.getSelectedItem();
   if (sel != null) {
     for (int i = 0; i < model.getSize(); i++) {
       if (sel.equals(model.getElementAt(i))) {
         selIx = i;
         break;
       }
     }
   }
   long curTime = System.currentTimeMillis();
   if (curTime - lastKeyTime < 300) {
     pattern += ("" + aKey).toLowerCase();
   } else {
     pattern = ("" + aKey).toLowerCase();
   }
   lastKeyTime = curTime;
   for (int i = selIx + 1; i < model.getSize(); i++) {
     String s = model.getElementAt(i).toString().toLowerCase();
     if (s.startsWith(pattern)) {
       return i;
     }
   }
   for (int i = 0; i < selIx; i++) {
     if (model.getElementAt(i) != null) {
       String s = model.getElementAt(i).toString().toLowerCase();
       if (s.startsWith(pattern)) {
         return i;
       }
     }
   }
   return -1;
 }

}</source>





Setting ComboBox Editor and ComboBox Renderer

   <source lang="java">

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.ruboBoxEditor; import javax.swing.DefaultListCellRenderer; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.border.LineBorder; import javax.swing.event.EventListenerList; class ColorComboBoxEditor implements ComboBoxEditor {

 final protected JButton editor;
 protected EventListenerList listenerList = new EventListenerList();
 public ColorComboBoxEditor(Color initialColor) {
   editor = new JButton("");
   editor.setBackground(initialColor);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
       Color currentBackground = editor.getBackground();
       Color color = JColorChooser.showDialog(editor, "Color Chooser", currentBackground);
       if ((color != null) && (currentBackground != color)) {
         editor.setBackground(color);
         fireActionEvent(color);
       }
     }
   };
   editor.addActionListener(actionListener);
 }
 public void addActionListener(ActionListener l) {
   listenerList.add(ActionListener.class, l);
 }
 public Component getEditorComponent() {
   return editor;
 }
 public Object getItem() {
   return editor.getBackground();
 }
 public void removeActionListener(ActionListener l) {
   listenerList.remove(ActionListener.class, l);
 }
 public void selectAll() {
 }
 public void setItem(Object newValue) {
   if (newValue instanceof Color) {
     Color color = (Color) newValue;
     editor.setBackground(color);
   } else {
     try {
       Color color = Color.decode(newValue.toString());
       editor.setBackground(color);
     } catch (NumberFormatException e) {
     }
   }
 }
 protected void fireActionEvent(Color color) {
   Object listeners[] = listenerList.getListenerList();
   for (int i = listeners.length - 2; i >= 0; i -= 2) {
     if (listeners[i] == ActionListener.class) {
       ActionEvent actionEvent = new ActionEvent(editor, ActionEvent.ACTION_PERFORMED, color
           .toString());
       ((ActionListener) listeners[i + 1]).actionPerformed(actionEvent);
     }
   }
 }

} class ColorCellRenderer implements ListCellRenderer {

 protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
 // Width doesn"t matter as the combo box will size
 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);
   }
   if(cellHasFocus || isSelected){
     renderer.setBorder(new LineBorder(Color.DARK_GRAY));
   }else{
     renderer.setBorder(null);
   }
   
   renderer.setPreferredSize(preferredSize);
   return renderer;
 }

} public class ColorComboBoxEditorRendererDemo {

 public static void main(String args[]) {
   Color colors[] = { Color.BLACK, Color.BLUE, Color.GREEN, 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.setEditable(true);
   comboBox.setRenderer(new ColorCellRenderer());
   Color color = (Color) comboBox.getSelectedItem();
   ComboBoxEditor editor = new ColorComboBoxEditor(color);
   comboBox.setEditor(editor);
   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);
 }

}</source>





Setting the Number of Visible Items in the Menu of a JComboBox Component

   <source lang="java">

import javax.swing.JComboBox; public class Main {

 public static void main(String[] argv) throws Exception {
   String[] items = new String[50];
   for (int i = 0; i < items.length; i++) {
     items[i] = "" + Math.random();
   }
   JComboBox cb = new JComboBox(items);
   // Retrieve the current max visible rows
   int maxVisibleRows = cb.getMaximumRowCount();
   // Change the current max visible rows
   maxVisibleRows = 20;
   cb.setMaximumRowCount(maxVisibleRows);
 }

}</source>





Sharing the Data Model between two JComboBoxes

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class SharedDataBetweenComboBoxSample {

 public static void main(String args[]) {
   final String labels[] = { "A", "B", "C", "D", "E", "F", "G" };
   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.setEditable(true);
   JComboBox comboBox2 = new JComboBox(model);
   comboBox2.setEditable(true);
   panel.add(comboBox1);
   panel.add(comboBox2);
   frame.add(panel, BorderLayout.NORTH);
   JButton button = new JButton("Add");
   frame.add(button, BorderLayout.SOUTH);
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       model.addElement("New Added");
     }
   };
   button.addActionListener(actionListener);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>