如何從AutoComplete TextField中獲取完整的選定文本?Codename One - 從AutoComplete中獲取所選文本
如果我使用getText(),我只能得到用戶迄今輸入的幾個字母。
例子:我寫 「FLO」,然後從列表中選擇 「花」,但gettext的()給我 「FLO」
AutoCompleteTextField auto = new AutoCompleteTextField(arrayWithNames);
auto.setMinimumLength(4);
auto.addListListener((ActionEvent evt1) -> {
String lookedFor = auto.getText();
Hashtable<String,Object> match[] = findMatch(lookedFor);
if(hMatch.length>0){
contElements.removeAll();
for (Hashtable<String, Object> Match1 : match) {
...
...//fill the Container with the names found
...
}
}
});
它是如何工作
我現在用的是自動完成TF作爲搜索按鈕。 我有一個列表中的所有名稱的數組。 然後我用數組填充Auto。 用戶從Auto中選擇一個名稱,然後使用findMatch()搜索正在「正在查找」的值。它返回一個新的數組與發現的條目。
我需要從列表中的完整名稱,所以我可以使用findMatch()方法,但是當我從Auto中使用getText()時,它只返回用戶輸入的字母,而不是全名,所以我的方法不起作用,因爲我在比較整個字符串。 (我使用的汽車,因爲它是非常方便的,如果人們只記住他們正在尋找的名稱的一部分)
我只是做了你在第一行提到的內容。我將監聽器添加到了AutoComplete TF中,當我從列表中選擇一個項目時,它確實會觸發getText()方法,但不是從列表中返回完整的選定值,而只是獲取我在鍵盤上按下的幾個字母:「hou」而不是「House」,「pita」而不是「Hospital」等 – Felipe
'public void addListListener(ActionListener a)' 添加一個動作偵聽器,當選擇自動完成列表中的條目時觸發事件。注意,這個方法只有在彈出窗口被重新顯示時纔會生效,如果在彈出窗口已經顯示的時候調用它,它將不起作用。 當他們從ACTF中選擇一個項目然後重新繪製列表模型以反映這個事件時,這個事件將會觸發。用戶在內部選擇輸入,並且ACTF更新TextField的內容;即你不必自己做這件事。 –
另一種方法是使用'keyPress'事件,然後設置一個變量來切換鍵擊,以確定用戶何時選擇了自動完成項目,並確定用戶選擇的索引以獲取自動完成從'getCompletion()'列出模型文本。 –