我需要创建一个可编辑的JComboBox,在其中根据用户在框中键入的字符从初始列表中过滤掉可能的选择。我能够在StackOverflow上找到解决方案,但仍然有两个问题:
当我输入一个键时,它会显示为选中状态,因此按下了下一个键,而不是添加到当前文本中 文本。我希望用户能够像输入JTextField一样输入。
我希望在键入时显示前5个(n?)可能的匹配值。
我尝试在线阅读规范,但找不到解决方法。
JTextComponent editor = (JTextComponent) myComboBox.getEditor().getEditorComponent();
myComboBox.setSelectedItem("");
editor.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent evt) {
String[] myValues = Utils.myValues(..get a list o value somehow ...);
String searchText = (String) myComboBox.getEditor().getItem();
List<String> filterArrayString = new ArrayList<>();
for (int i = 0; i < myValues.length; i++) {
if (myValues[i].toLowerCase().contains(searchText.toLowerCase())) {
filterArrayString.add(myValues[i]);
}
}
myComboBox.setModel(new DefaultComboBoxModel(filterArrayString.toArray()));
myComboBox.getEditor().setItem(searchText);
}
});
按字母时过滤,选择字母