看起来AutoCompleteTextField正在加载一个建议选择事件。我用ListModel测试它。您可以使用以下代码从准系统hello world项目重新创建此问题。
public void start() {
if (current != null) {
current.show();
return;
}
Form hi = new Form("Hi World");
ListModel<String> suggestionsModel = new DefaultListModel<String>();
suggestionsModel.addItem("Apple");
suggestionsModel.addItem("Banana");
suggestionsModel.addItem("Chocolate");
suggestionsModel.addItem("Elk");
suggestionsModel.addItem("Fish");
AutoCompleteTextField search = new AutoCompleteTextField(suggestionsModel);
suggestionsModel.addSelectionListener(new SelectionListener() {
@Override
public void selectionChanged(int oldSelected, int newSelected) {
System.out.println("SUGGESTION SELECTED"+suggestionsModel.getSelectedIndex());
}
});
hi.add(search);
hi.show();
}
如果您运行代码,您可以看到&#34; SUGGESTION SELECTED0&#34;得到两次打印,确认选择是在加载时触发并默认选择第一个建议。
这引起了我的问题。我正在搜索一个对象然后如果找到,我正在向用户显示其属性。根据此问题,第一个对象的属性默认情况下会在加载时显示。
答案 0 :(得分:2)
这是“过度渴望”的数据更改侦听器的行为,我们不会更改它,因为有一些依赖于此行为的边缘情况(例如粘贴,即时编辑类型等)。
使用它非常简单:
if(currentValue != lasValue) {
....
}