Swing Generisches ComboBoxModel

G

Gast2

Gast
Hi,
ich versuche grad ein generisches ComboBoxModel zu bauen. Der Hintergrund: Ich habe in meinem Programm eine Reihe von Combo Boxen in die ich verschiedene Objekte schmeißen will.
Nun hab ich mir gedacht dass ich nur ein Model schreibe dass ich für alle Boxen nutzen kann.

Hier mein bisheriger Code: (ist zum Großteil aus dem DefaultComboBoxModel)

Java:
public class GenericComboBoxModel<E> extends AbstractListModel {
    /** list of items */
    private List<E> items;

    /** selected item */
    private E selectedItem;

    public GenericComboBoxModel() {
        this.items = new ArrayList<E>();
    }

    public GenericComboBoxModel(List<E> items) {
        this.items = items;
    }

    public int getSize() {
        return items.size();
    }

    public E getElementAt(int index) {
        if (index >= 0 && index < items.size()) {
            return items.get(index);
        } else {
            return null;
        }
    }

    public void addElement(E obj) {
        items.add((E)obj);
        fireIntervalAdded(this,items.size()-1, items.size()-1);
        
        if (items.size() == 1 && selectedItem == null && obj != null  ) {
            setSelectedItem(obj);
        }
    }

    public void removeElement(E obj) {
        int index = items.indexOf(obj);
        if (index != -1) {
            removeElementAt(index);
        }
    }
    
    public void removeElementAt(int index) {
        if (getElementAt(index) == selectedItem) {
            if (index == 0) {
                setSelectedItem(getSize() == 1 ? null : getElementAt(index + 1));
            } else {
                setSelectedItem( getElementAt(index - 1));
            }
        }

        items.remove(index);

        fireIntervalRemoved(this, index, index);
    }

    public void insertElementAt(E obj, int index) {
        items.add(index, obj);
        fireIntervalAdded(this, index, index);
    }

    public void setSelectedItem(E anItem) {
        if ((selectedItem != null  && !selectedItem.equals(anItem)) || selectedItem == null && anItem != null) {
            selectedItem = anItem;
            fireContentsChanged(this, -1, -1);
        }
    }

    public E getSelectedItem() {
        return selectedItem;
    }

Um mein Model einer ComboBox hinzufügen zu können müsste ich das ja ComboBoxModel implementieren (bzw. das MutableComboBoxModel).
Und genau hier ist mein Problem, ich möchte nicht die Signaturen verwenden wo einfach in Object übergeben wird und ich mir das entsprechend zurecht caste...
Code:
removeElement(E obj)
wäre mir da wesentlich lieber.
Kann ich das irgendwie realisieren?
 
G

Gast2

Gast
Ok danke.
Ist zwar schade, aber dann werd ich wohl mit dem Default model vorlieb nehmen müssen :)
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben