我正在尝试使用 Java 中的 JList 创建搜索功能。我在插入到 JList 的 ListModel 中有一个联系人列表。它显示所有联系人都很好。但是,我在联系人列表上方有一个搜索框,并希望将联系人缩小到用户在输入时在搜索框中输入的内容(如 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);
编辑**包含所有原始联系人的原始 ListModel 在此匿名类之前声明,称为 listModel,我在此类中重用它来替换完整的联系人列表..
解决这个问题的任何帮助都会有很大帮助。让我知道是否需要发布我的代码的其他部分。