2014-06-06 77 views
1

我正在尋找使用組合框在javafx中自動完成組合框。我有它能夠過濾項目,但我遇到的問題之一是,如果用戶使用箭頭鍵通過過濾列表,組合框編輯器會填充該項目,即使他們實際上不'要選擇該項目。有誰知道如何從組合框禁用此功能,或者我將不得不做我自己的自定義組件。使用箭頭鍵時,JavaFX ComboBox自動填充編輯器文本

這是我到目前爲止。

任何幫助禁用組合框中的此功能將不勝感激。

回答

0

問題似乎是,當在組合框中選擇一個項目時,組合框會有一個默認的StringConverter,它在選擇模型更改時調用T.toString()。

*解決方法是設置您自己的StringConverter像這樣。

public AutoComplete() { 
    setConverter(new StringConverter<T>(){ 
     @Override 
     public String toString(T item) { 
      return item == null ? null : display(item); 
     } 
     @Override 
     public T fromString(String string) { 
      return getFromString(string); 
     } 
    }); 
} 

protected abstract T getFromString(String input); 

protected abstract String display(T item); 

*我說的解決方法,因爲這可能不是,如果你的自動完成從服務器上的每個擊鍵獲取數據的最佳/最有效的方式。但是對於我來說,這解決了編輯器在調用組合框列表中選擇一個項目時調用對象的字符串方法的問題。