Frage

Ich versuche, eine nette GUI in Swing zu schreiben, das die richtigen Modell-Delegierten Muster so viel wie möglich verwendet. Ich habe einen JComboBox, dass, wenn geändert, muss das Modell mit den neuen Daten aktualisieren. Um das aktuell ausgewählte Element, ich bin mit:

fooCombo.addItemListener(new ItemListener() {
    public void itemStateChanged(final ItemEvent arg0) {
        fooChangedHandler((Foo) fooModel.getSelectedItem());
    }
});

Welche gibt, was die Daten als ein schönes Objekt geändert wurde. Allerdings kann ich nicht einen Weg finden, den alten Wert zu erfahren, so dass ich weiß nicht, welches Objekt geändert werden muss. Irgendwelche Ideen hier?

War es hilfreich?

Lösung

am Ende gar nicht auf das Modell gehen, aber mein Objekt aus der getItem Methode immer etwa so:

public void itemStateChanged(final ItemEvent event) {
    if (event.getStateChange() == event.DESELECTED) {
        deselectedFoo = (Foo) event.getItem();
    } 
    else if (event.getStateChange() == event.SELECTED) {
        FooChangedHandler(deselectedFoo,(Foo) event.getItem());
    }
}

Andere Tipps

Foo oldFoo;
....
fooCombo.addItemListener(new ItemListener() {
    public void itemStateChanged(final ItemEvent arg0) {
        Foo newFoo = (Foo) fooModel.getSelectedItem();
        fooChangedHandler(oldFoo, newFoo);
        oldFoo = newFoo;
    }
});

Als Standard ComboBoxModel und ItemEvent nicht lassen Sie den zuvor ausgewählten Wert erhalten Sie Ihre eigene ComboBoxModel mit dieser Funktion implementieren könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top