Hab eine JTable in die Daten geschrieben werden. Das Model der Tabelle heißt KategorieTableModel und hat u.a. folgenden Code:
Dann gibt es eine JComboBox deren Model wie folgt aussieht:
Wichtig! Kategorieobjekte können nur einmal in die Tabelle gespeichert werden.
Das geschieht mit:
Das KategorieTableModel wird bei jeder hinzugefügten Kategorie serialisiert und beim Programmstart wieder wie folgt geladen.
Die Daten werden erfolgreich in die Tabelle und die Combobox geladen.
Wenn ich jetzt aber ein bereits in der Tabelle vorhandenes Kategorie-Objekt einfügen möchte, so klappt das. Und das ist nicht gewünscht.
Hab leider keine Idee warum
die Objekte als nicht mehr gleich ansieht
Java:
public class KategorieTableModel implements TableModel, Serializable{
private ArrayList<Kategorie> kategorien = new ArrayList<Kategorie>();
private ArrayList listeners = new ArrayList();
private Kategorie lastAdded;
public void addKategorie(Kategorie insertingCat){
...
fügt Kategorien einer Liste zu
...
TableModelEvent tme = new TableModelEvent(this, index, index, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT );
// Nun das Event verschicken
for(int i = 0; i<listeners.size(); i++){
((TableModelListener)listeners.get(i)).tableChanged(tme);
}
public Kategorie getLastAddedCategory(){
return lastAdded;
}
}
Dann gibt es eine JComboBox deren Model wie folgt aussieht:
Java:
public class KategorieModelComboBox implements ComboBoxModel, TableModelListener, Serializable{
private ArrayList<Kategorie> kategorien = new ArrayList<Kategorie>();
private String selectedItem;
private KategorieTableModel model;
public void setModel(KategorieTableModel model){
this.model = model;
model.addTableModelListener(this);
}
...
public void tableChanged(TableModelEvent e) {
addKategorie(model.getLastAddedCategory());
}
Wichtig! Kategorieobjekte können nur einmal in die Tabelle gespeichert werden.
Das geschieht mit:
Java:
if(!model.contains(cat_leaf)){
model.addKategorie(cat_leaf);
}
Das KategorieTableModel wird bei jeder hinzugefügten Kategorie serialisiert und beim Programmstart wieder wie folgt geladen.
Java:
Serializer ser = new Serializer();
KategorieTableModel catModel = ser.deSerializeModel();
if(catModel!=null){
jTableKategorieBaumSaved.setModel(catModel);
ArrayList<Kategorie> cat_list = new ArrayList<Kategorie>();
cat_list = catModel.getKategorieList();
KategorieModelComboBox catModelCombo = new KategorieModelComboBox();
for (int i=0; i<cat_list.size(); i++){
catModelCombo.addKategorie(cat_list.get(i));
}
catModelCombo.setModel(catModel);
jComboBoxeBayKat1.setModel(catModelCombo);
} else {
//falls zuvor noch nicht serialisiert wurde
jTableKategorieBaumSaved.setModel(new KategorieTableModel());
jComboBoxeBayKat1.setModel(new KategorieModelComboBox());
}
Die Daten werden erfolgreich in die Tabelle und die Combobox geladen.
Wenn ich jetzt aber ein bereits in der Tabelle vorhandenes Kategorie-Objekt einfügen möchte, so klappt das. Und das ist nicht gewünscht.
Hab leider keine Idee warum
Java:
if(!model.contains(cat_leaf)){
model.addKategorie(cat_leaf);
}
Zuletzt bearbeitet: