Hallo zusammen,
ich bin grad dabei meine Java-Kenntnisse zu reaktivieren und schreib mir zu diesem Zweck einen kleinen Timetracker. Daten werden in diesem Projekt in einer Datenbank abgelegt, Hibernate kommt der Einfachheit halber zum Einsatz.
Ich habe jetzt also ein Fenster, in dem ich eine JComboBox habe, in der Projekte aufgelistet werden. Über ein Menü habe ich die Möglichkeit ein neues Projekt hinzu zu fügen. Das passiert in einem neuen Fenster. Wenn das neue Projekt hinzugefügt ist soll es natürlich auch in der ComboBox angezeigt werden. Soweit so gut.
Jetzt aber mal zum Problem:
Ich stehe vor einem echten Rätsel. Meiner Meinung nach hab ich alles so gemacht wie es laufen müsste, aber sicher bin ich mir nu nich mehr.
Hier mal kurz das Model, das ich verwende:
Die ComboBox erstelle ich wie folgt:
Das neue Projekt füge ich wie folgt hinzu (nachdem is erfolgreich in der DB gespeichert wurde):
Zusätzliche Listener für irgendwas füge ich nicht hinzu.
Falls mir hier einer 'nen Tipp geben kann was da falsch läuft, ich bin für jeden Hinweis dankbar.
MfG
Stefan
ich bin grad dabei meine Java-Kenntnisse zu reaktivieren und schreib mir zu diesem Zweck einen kleinen Timetracker. Daten werden in diesem Projekt in einer Datenbank abgelegt, Hibernate kommt der Einfachheit halber zum Einsatz.
Ich habe jetzt also ein Fenster, in dem ich eine JComboBox habe, in der Projekte aufgelistet werden. Über ein Menü habe ich die Möglichkeit ein neues Projekt hinzu zu fügen. Das passiert in einem neuen Fenster. Wenn das neue Projekt hinzugefügt ist soll es natürlich auch in der ComboBox angezeigt werden. Soweit so gut.
Jetzt aber mal zum Problem:
- Die ComboBox wurde noch nicht angewählt und ich füge ein neues Projekt hinzu. Dann ist alles super und das Projekt erscheint als letztes in der Box.
- Ich wähle die Box einmal an, es muss noch nicht mal ein Item ausgewählt werden, und füge dann ein Projekt hinzu. Dann werden alle Einträge der ComboBox entfernt, wenn ich die Box ausklappe und dort anklicke wo im Normalfall die ganzen Items drin sind, dann wird das aktuellste Projekt selektiert.
Ich stehe vor einem echten Rätsel. Meiner Meinung nach hab ich alles so gemacht wie es laufen müsste, aber sicher bin ich mir nu nich mehr.
Hier mal kurz das Model, das ich verwende:
Java:
package de.stefan_1st;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.MutableComboBoxModel;
import de.stefan_1st.db.Project;
public class ProjectModel extends AbstractListModel implements MutableComboBoxModel
{
private static final long serialVersionUID = 1L;
private Object selected;
private List<Project> projects;
public ProjectModel(List<Project> projects)
{
this.projects = projects;
}
@Override
public Object getElementAt(int pos)
{
if (projects == null || projects.size() < pos)
return null;
return projects.get(pos).getName();
}
@Override
public int getSize()
{
if (projects == null)
return 0;
return projects.size();
}
public void setSelectedItem(Object item)
{
selected = item;
}
public Object getSelectedItem()
{
return selected;
}
public void addElement(Object obj)
{
projects.add((Project)obj);
}
public void insertElementAt(Object obj, int index)
{
}
public void removeElementAt(int index)
{
}
public void removeElement(Object obj)
{
}
}
Die ComboBox erstelle ich wie folgt:
Java:
projectSelect = new JComboBox();
projectSelect.setModel(new ProjectModel(projects));
subPane.add(projectSelect);
Das neue Projekt füge ich wie folgt hinzu (nachdem is erfolgreich in der DB gespeichert wurde):
Java:
projectSelect.addItem(newProject);
Zusätzliche Listener für irgendwas füge ich nicht hinzu.
Falls mir hier einer 'nen Tipp geben kann was da falsch läuft, ich bin für jeden Hinweis dankbar.
MfG
Stefan