Мне нужно создать редактируемый 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);
}
});
Фильтр при нажатии буквы, буква выбрана
Фильтр при вводе буквы выделен