Я пытаюсь создать функцию поиска с помощью JList в Java. У меня есть список контактов в ListModel, который я вставил в JList. Это прекрасно отображает все контакты. Однако у меня есть окно поиска над списком контактов, и я хочу, чтобы контакты были сужены до того, что пользователь вводит в поле поиска по мере ввода (например, поиск Google). Однако, когда я пытаюсь ввести в поле поиска, все контакты исчезают, а затем я также не могу вернуться назад. Мой код KeyListener выглядит следующим образом:
KeyListener klisten = new KeyListener()
{
public void keyPressed(KeyEvent evt)
{
searchResults = new ContactList();
listModel.removeAllElements();
searchResults.addContact(contactList.getContact(evt.getKeyChar()));
for (int i = 0; i < searchResults.getContacts().size(); i++)
{
listModel.addElement(searchResults.getContact(i).getFname() + " " + searchResults.getContact(i).getLname());
}
contacts = new JList(listModel);
contacts.validate();
}
public void keyReleased(KeyEvent evt) {}
public void keyTyped(KeyEvent evt) {}
};
searchField.addKeyListener(klisten);
EDIT** исходная ListModel, содержащая все исходные контакты, объявляется перед этим анонимным классом и называется listModel, которую я повторно использовал в этом классе для замены полного списка контактов.
Любая помощь в решении этой проблемы будет очень полезна. Дайте мне знать, если мне нужно опубликовать другие части моего кода.
KeyListener
, вместо этого попробуйтеDocumentListener
в текстовом поле. - person MadProgrammer   schedule 16.08.2012