以下のコードは、コンボ アクションで発生している問題を示しています。getSelectedItem() は、選択時だけでなく複数回発生します。フレームをロードするだけで、メソッドが 3 回呼び出されます。コンボ ボックスをクリックするたびに呼び出しが行われます。これは、実際の選択ではなくドロップダウンに対するものであってもです。編集可能なテキスト領域内をクリックすると、getSelectedItem() メソッドもトリガーされます。このイベントをフィルタリングする方法、またはボックス モデル レベルでデータを検証する別の方法はありますか?
public class SSCCE {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame aframe = new JFrame();
Combo _combo = new Combo();
_combo.addElement("This");
_combo.addElement("That");
JComboBox _box = new JComboBox(new Combo());
_box.setEditable(true);
aframe.add(_box);
aframe.setVisible(true);
}
static class Combo extends DefaultComboBoxModel{
public Combo(){
}
int i = 0;
@Override
public Object getSelectedItem() {
System.out.println("Get selected Item" + i);
i++;
return super.getSelectedItem();
}
}
}