2017-04-27 37 views
2

我有兩個問題:代號一個 - autocompletetextfield的GetItem選擇

1)首先,我想exactlly在DefaultListModel後添加地圖中AutoCompleteTextField我想添加的ListModel的在我autocompletetextField

2 )當我在AutoCompleteTextField中選擇一個元素時,如何獲取文本?

Form hi = new Form("Auto Complete", new BoxLayout(BoxLayout.Y_AXIS)); 
     AutoCompleteTextField ac = new AutoCompleteTextField("Short", "Shock", "Sholder", "Shrek0", "3asna", "niazra"); 
    ac.setMinimumElementsShownInPopup(5); 
    //final DefaultListModel<Map<String,Object>> options = new DefaultListModel<>(); 
    final DefaultListModel<String> options = new DefaultListModel<>(); 

    AutoCompleteTextField an = new AutoCompleteTextField(options); 
    hi.add(an); 
    ac.addListListener(a -> { 
     List<Object> ls = new List<>(); 
     System.out.println("i want to display the text selected"); 

    }); 
    hi.add(ac); 
    hi.show(); 

回答

2

當您選擇此項目的文本複製到AutoCompleteTextfield的文本字段一部分AutoCompleteTextField的建議箱中的項目,但這僅出現在的ListEvent後。

爲了有這種行爲,更喜歡在DefaultListModel使用選擇監聽器:

Form hi = new Form("ACTF", new BoxLayout(BoxLayout.Y_AXIS)); 

    DefaultListModel<String> defList = new DefaultListModel<>("Red", "Green", "Blue", "Orange"); 
    AutoCompleteTextField tf1 = new AutoCompleteTextField(defList); 

    defList.addSelectionListener((oldid, newid)-> Log.p(defList.getItemAt(newid))); 

    hi.add(tf1); 
    hi.show(); 

我不知道爲什麼,它顯示的形式出現後兩次,但之後工作完全正常。

編輯:如果你想在屏幕上顯示的文字,你必須使用這樣的事情:

Form hi = new Form("ACTF", new BoxLayout(BoxLayout.Y_AXIS)); 

    Label text = new Label("Selected text"); 

    DefaultListModel<String> defList = new DefaultListModel<>("Red", "Green", "Blue", "Orange"); 
    AutoCompleteTextField tf1 = new AutoCompleteTextField(defList); 

    defList.addSelectionListener((oldid, newid)-> { 
     text.setText(defList.getItemAt(newid)); 
     hi.revalidate(); 
    }); 
    hi.add(text); 
    hi.add(tf1); 
    hi.show(); 

編輯2:實例與鏈接的地圖:

Form hi = new Form("ACTF", new BoxLayout(BoxLayout.Y_AXIS)); 

    Map testMap = new HashMap<String, String>(); 
    testMap.put("Red", "Roses are red"); 
    testMap.put("Green", "Grass is green"); 
    testMap.put("Blue", "Sky is blue"); 
    testMap.put("Orange", "Apricots are orange"); 

    Label text = new Label("Selected text"); 



    DefaultListModel<String> defList = new DefaultListModel<>(testMap.keySet()); 
    AutoCompleteTextField tf1 = new AutoCompleteTextField(defList); 

    defList.addSelectionListener((oldid, newid)-> { 
     text.setText((String) testMap.get(defList.getItemAt(newid))); 
     hi.revalidate(); 
    }); 
    hi.add(text); 
    hi.add(tf1); 
    hi.show(); 
+0

感謝但它不起作用 –

+0

你想在哪裏顯示選定的文本?在設備的屏幕上?在這裏,我的代碼將文本發送到調試控制檯,如System.out.println會。檢查示例的編輯版本。 –

+0

感謝它的工作,但我現在想在AutoComAutoCompleteTextField中添加一張地圖,因爲當我選擇項目時,我想獲取ID 我不知道你是否理解我 這裏是一個示例 final DefaultListModel > options = new DefaultListModel <>(); AutoCompleteTextField an = new AutoCompleteTextField(options); –