我想使用java swing製作PC的窗口應用程序。我想在那裏創建一個文本字段。在輸入該文本字段時,我需要它在該文本字段下顯示提示。用戶可以從列表中選擇需要的文本。就像谷歌搜索一樣在瀏覽器中。所以我需要兩個函數,第一個函數很簡單:通過輸入文本過濾一組字符串。但如何在列表中顯示它們?如何使一個文本字段進行搜索
EDIT1:我需要顯示列表,如果在過濾後顯示某些內容,並且可以使用上下鍵選擇。與谷歌搜索相同,但在PC應用程序。
我想使用java swing製作PC的窗口應用程序。我想在那裏創建一個文本字段。在輸入該文本字段時,我需要它在該文本字段下顯示提示。用戶可以從列表中選擇需要的文本。就像谷歌搜索一樣在瀏覽器中。所以我需要兩個函數,第一個函數很簡單:通過輸入文本過濾一組字符串。但如何在列表中顯示它們?如何使一個文本字段進行搜索
EDIT1:我需要顯示列表,如果在過濾後顯示某些內容,並且可以使用上下鍵選擇。與谷歌搜索相同,但在PC應用程序。
JComboBox
是一個common choice爲此。 AutoCompleteJComboBoxer
是我試過的一個。
我建議你到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。我不知道是否可以始終打開組合框。
嗯....在JTextField中,爲按鍵添加一個監聽器,然後只要按下任何按鍵,就可以使用一組來排序所有相關的元素。一個選項是將字符串toChar用於獲取每個字符,然後將記錄發佈到JList中。
其次,您最好將您的記錄保存在XML中,然後跟蹤將更容易休息任何種類的排序算法邏輯都可以輕鬆應用。
謝謝你的回覆,但我需要的是顯示列表的第二個功能,我更新了問題,請參考它。 JLabel沒有提供從列表中選擇的方法,因爲我知道。 – maximus
@maximus:將列表分開並在jlabel中顯示它。 'JComboBox'爲+1的 – Heisenbug
。 – trashgod