Java-combo-box-Modell und Holen Sie sich den ausgewählten Artikel

Den code unten zeigt ein problem ich habe mit combo-Aktionen. Die getSelectedItem() gefeuert mehrmals statt nur in Auswahl. Einfach das laden der frame ruft die Methode 3 mal. Jeder Klick auf die combo-box ist ein Aufruf, auch wenn es nur für die dropdown-und nicht die eigentliche Auswahl. Klicken in das Bearbeitbare text-Bereich löst auch die getSelectedItem () - Methode. Gibt es eine Möglichkeit, filter dieses Ereignis?, oder eine Alternative Methode zum überprüfen von Daten auf den box-Modell-Ebene?

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();
    }
  }
}
  • Was versuchen Sie zu erreichen? Es ist wahrscheinlich eine bessere option als übergeordnete getSelectedItem().
  • Wo steht, dass es nur einmal aufgerufen werden pro selection? Das ist ein job für einen action-listener, nicht ein Modell überschreiben.
InformationsquelleAutor Fozz | 2012-06-06
Schreibe einen Kommentar