Codename One-从自动完成功能中获取选定的文本



如何从自动完成文本字段中获取完整的选定文本?

如果我使用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--

祝你好运!

最新更新