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)
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...
wäre mir da wesentlich lieber.
Kann ich das irgendwie realisieren?
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)
Kann ich das irgendwie realisieren?