我正嘗試在Java中使用JList創建搜索功能。我有一個ListModel中的聯繫人列表,我插入到一個JList中。這顯示所有聯繫人都很好。不過,我在聯繫人列表上方有一個搜索框,並希望將聯繫人縮小到用戶鍵入搜索框時鍵入的內容(如Google搜索)。但是,當我嘗試在搜索框中鍵入時,所有聯繫人消失,然後我無法退格。我的KeyListener代碼如下:在Java中搜索JList
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的,我在這個類重用替換整個聯繫人列表..
任何幫助解決這個問題都會有很大的幫助。讓我知道是否需要發佈我的代碼的其他部分。
首先,你真的不應該使用'KeyListener'爲此,試試在文本字段上使用'DocumentListener'而不是 – MadProgrammer 2012-08-16 03:13:12