2016-10-16 6 views
2

AutoCompleteTextFieldがロード時に提案選択イベントを発生させているようです。私はこれをListModelでテストします。 barebone 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(); 
} 

あなたがコードを実行する場合は、「SUGGESTION SELECTED0は」二度選択が負荷に発砲し、デフォルトで最初の提案を選択していることを確認し、印刷されることを見ることができます。

これは私の問題を引き起こしています。私はオブジェクトを探していて、見つかったらその属性をユーザに表示しています。この問題では、ロード時に最初のオブジェクトの属性がデフォルトで表示されています。

答えて

2

データ変更リスナーの動作は "気になる"ので、この動作に依存するエッジケースがいくつか存在するため、変更しません(ペースト、インスタント編集のタイプなど)。このでの作業

は非常に簡単です:

if(currentValue != lasValue) { 
.... 
} 
関連する問題