2011-06-25 33 views
4

我想使用java swing製作PC的窗口應用程序。我想在那裏創建一個文本字段。在輸入該文本字段時,我需要它在該文本字段下顯示提示。用戶可以從列表中選擇需要的文本。就像谷歌搜索一樣在瀏覽器中。所以我需要兩個函數,第一個函數很簡單:通過輸入文本過濾一組字符串。但如何在列表中顯示它們?如何使一個文本字段進行搜索

EDIT1:我需要顯示列表,如果在過濾後顯示某些內容,並且可以使用上下鍵選擇。與谷歌搜索相同,但在PC應用程序。

回答

3

我建議你到DocumentChangeListener添加到您的JTextField監視插入/刪除/更新字符:

JTextField textField = new JTextField; 
textField.addDocumentListener (new DocumentListener() { 
    public void changedUpdate(DocumentEvent e) { 
    } 
    public void removeUpdate(DocumentEvent e) { 
    } 
    public void insertUpdate(DocumentEvent e) { 
    } 
} 
); 

看看這個tutorial的。

所以我需要一些兩個功能,第一 一個很簡單:篩選 組字符串由已鍵入的文本。

既然您已輸入文字,請過濾您的一組字符串。在選擇一種有效的方式來存儲和檢索數據結構中的字符串時要小心。用大量的字符串來排序這可能不是微不足道的。 (我認爲這將是很難將它與一個ArrayList,如果你要是比較大的一組字符串。)

但如何將它們顯示在列表中?

我想你可以使用JLabel。 或者,您可以嘗試使用JComboBox實現您自己的ComboBoxModel。我不知道是否可以始終打開組合框。

+0

謝謝你的回覆,但我需要的是顯示列表的第二個功能,我更新了問題,請參考它。 JLabel沒有提供從列表中選擇的方法,因爲我知道。 – maximus

+0

@maximus:將列表分開並在jlabel中顯示它。 'JComboBox'爲+1的 – Heisenbug

+1

。 – trashgod

1

嗯....在JTextField中,爲按鍵添加一個監聽器,然後只要按下任何按鍵,就可以使用一組來排序所有相關的元素。一個選項是將字符串toChar用於獲取每個字符,然後將記錄發佈到JList中。

其次,您最好將您的記錄保存在XML中,然後跟蹤將更容易休息任何種類的排序算法邏輯都可以輕鬆應用。

相關問題