Codenameone Codename One-在运行时修改AutoCompleteTextField数据
我有一个AutoCompleteTextField,我想在运行时更改它的选项。 问题是我不知道如何显示更改 以下是我尝试过的一个非常简单的例子:Codenameone Codename One-在运行时修改AutoCompleteTextField数据,codenameone,Codenameone,我有一个AutoCompleteTextField,我想在运行时更改它的选项。 问题是我不知道如何显示更改 以下是我尝试过的一个非常简单的例子: public void start() { if(current != null){ current.show(); return; } Form form = new Form( new FlowLayout() ); String [] list2 = { "option A", "
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”。我已经尝试了.repaint()、textField2.repaint()
任何帮助都将不胜感激。试试以下方法:
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;
}
}
final DefaultListModel options=new DefaultListModel();
AutoCompleteTextField ac=新的AutoCompleteTextField(选项){
@凌驾
受保护的布尔过滤器(字符串文本){
如果(text.length()==0){
返回false;
}
字符串[]l=更改选项(文本);
如果(l==null | | l.length==0){
返回false;
}
options.removeAll();
for(字符串s:l){
选项。附加项;
}
返回true;
}
};
私有字符串[]更改选项(字符串文本){
String[]list2=新字符串[2];
if(){
列表2[0]=“选项A”;
列表2[1]=“选项B”;
返回列表2;
}
if(){
列表2[0]=“X”;
清单2[1]=“D”;
返回列表2;
}
}
看看