我試圖將JavaFX ComboBox
用作包含歷史記錄的搜索字段。 這是我的代碼示例。javafx組合框項目列表問題
ObservableList<String> patternHistory = FXCollections.observableArrayList();
searchComboBox.setItems(patternHistory);
searchComboBox.valueProperty().addListener((observable, oldValue, newValue) -> {
ObservableList<String> history = searchComboBox.getItems();
// This works fine
// history.add(newValue);
// This does not work
history.add(0, newValue);
});
如果我做history.add(newValue)
的ComboBox
的行爲如我所料。 歷史記錄中的最後一項添加到列表的末尾。 但是,我希望最後一個條目首先顯示(我也想刪除重複項並限制歷史記錄大小,但在此示例中我保持簡單)。
所以我決定只需在列表前添加新值history.add(0, newValue)
。 但是,當我這樣做時,組合框開始表現出奇怪的方式,並且代碼不再工作。似乎只要我在列表末尾添加/刪除項目,它可以正常工作,但如果我在開頭或中間執行相同操作,則不再有效。
在這裏,我使用lambda表達式語法,但我嘗試了匿名類表示法,它是相同的。我也試圖實現我自己的可觀察列表,並且也有相同的結果。
我目前正在使用JDK 1.8.0_60,但我遇到了早期版本的問題。 有人可以告訴我,如果有辦法解決這個問題,或者如果我做錯了什麼?
看看這個http://stackoverflow.com/questions/26144930/combobox-strange-behaviour-javafx-8/26196751#26196751 – StasKolodyuk
不幸的是,一個選擇框呢不允許用戶輸入新的模式。 – Iceman