这里面包含了一百多个JAVA源文件

源代码在线查看: e760. selecting an item in a jcombobox component with multiple keystrokes.txt

软件大小: 551 K
上传用户: maple_78
关键词: JAVA
下载地址: 免注册下载 普通下载 VIP

相关代码

				By default, when the user types a keystroke in a read-only combobox and an item in the combobox starts with the typed keystroke, the combobox will select that item. This behavior is not ideal if there are multiple items that start with the same letter. 
				This example demonstrates how to customize a combobox so that it will select an item based on multiple keystrokes. More specifically, if a keystroke is typed within 300 milliseconds of the previous keystroke, the new keystroke is appended to the previous keystroke, and the combobox will select an item that starts with both keystrokes. 
				
				    // Create a read-only combobox
				    String[] items = {"Ant", "Ape", "Bat", "Boa", "Cat", "Cow"};
				    JComboBox cb = new JComboBox(items);
				    
				    // Install the custom key selection manager
				    cb.setKeySelectionManager(new MyKeySelectionManager());
				    
				    // This key selection manager will handle selections based on multiple keys.
				    class MyKeySelectionManager implements JComboBox.KeySelectionManager {
				        long lastKeyTime = 0;
				        String pattern = "";
				    
				        public int selectionForKey(char aKey, ComboBoxModel model) {
				            // Find index of selected item
				            int selIx = 01;
				            Object sel = model.getSelectedItem();
				            if (sel != null) {
				                for (int i=0; i				                    if (sel.equals(model.getElementAt(i))) {
				                        selIx = i;
				                        break;
				                    }
				                }
				            }
				    
				            // Get the current time
				            long curTime = System.currentTimeMillis();
				    
				            // If last key was typed less than 300 ms ago, append to current pattern
				            if (curTime - lastKeyTime < 300) {
				                pattern += ("" + aKey).toLowerCase();
				            } else {
				                pattern = ("" + aKey).toLowerCase();
				            }
				    
				            // Save current time
				            lastKeyTime = curTime;
				    
				            // Search forward from current selection
				            for (int i=selIx+1; i				                String s = model.getElementAt(i).toString().toLowerCase();
				                if (s.startsWith(pattern)) {
				                    return i;
				                }
				            }
				    
				            // Search from top to current selection
				            for (int i=0; i				                if (model.getElementAt(i) != null) {
				                    String s = model.getElementAt(i).toString().toLowerCase();
				                    if (s.startsWith(pattern)) {
				                        return i;
				                    }
				                }
				            }
				            return -1;
				        }
				    }
				
							

相关资源