import javax.swing.ComboBoxModel; 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; } }