如何从自动完成文本字段中获取完整的选定文本?
如果我使用getText(),我只得到用户迄今为止输入的几个字母。
示例:我写"flo",然后从列表中选择"Flowers",但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()搜索正在"lookedFor"的值。它返回一个新数组,其中包含找到的条目。
我需要列表中的完整名称,这样我就可以使用findMatch()方法,但当我从Auto中使用getText()时,它只返回用户输入的字母,而不是整个名称,所以我的方法不起作用,因为我在比较整个字符串。(我使用Auto是因为如果人们只记住他们要查找的名称的一部分,这会非常方便)
如果您是AutoCompleteTextField
的子类,则可以通过getSuggestionModel().getItemAt(getSuggestionModel().getSelectedIndex())
内部访问所选文本。现在,您可以在派生类上定义public
getter方法getSelectedText()
或其他方法。
我不确定您是否正确使用了AutoCompleteTextBox。
"自动完成文本"框的全部用途是帮助用户从有效请求列表中选择
在用户准备好提交AutoCompleteTB所在的表单之前,您不应该获得getText()
的值。
如果您还没有看这里,这将有所帮助:https://www.codenameone.com/javadoc/com/codename1/ui/AutoCompleteTextField.html#getPropertyTypes--
祝你好运!