我有一个AutoCompleteTextField,我想在运行时更改其选项。 问题是我不知道如何显示更改。
这是我尝试过的一个非常简单的例子:
public void start() {
if(current != null){
current.show();
return;
}
Form form = new Form( new FlowLayout() );
String [] list2 = { "option A", "option B"};
AutoCompleteTextField textField2 = new AutoCompleteTextField( list2 );
form.add( textField2 );
form.show();
list2 = new String [2];
list2 [0] = "X";
list2 [1] = "D";
textField2 = new AutoCompleteTextField( list2 );
form.show();
}
我总是显示“选项A”和“选项B”。我已经尝试过for.repaint(),textField2.repaint()...
任何帮助将不胜感激。
答案 0 :(得分:2)
尝试一下:
final DefaultListModel<String> options = new DefaultListModel<>();
AutoCompleteTextField ac = new AutoCompleteTextField(options) {
@Override
protected boolean filter(String text) {
if(text.length() == 0) {
return false;
}
String[] l = changeOptions(text);
if(l == null || l.length == 0) {
return false;
}
options.removeAll();
for(String s : l) {
options.addItem(s);
}
return true;
}
};
private String[] changeOptions(String text){
String[] list2 = new String [2];
if(<some_condition_with_text>){
list2 [0] = "option A";
list2 [1] = "option B";
return list2;
}
if(<some_other_condition_with_text>){
list2 [0] = "X";
list2 [1] = "D";
return list2;
}
}
看看https://www.codenameone.com/javadoc/com/codename1/ui/AutoCompleteTextField.html