Model mit Models füllen

Gerald

Mitglied
Guten Tag und hallo!

Seit einiger Zeit versuche ich mich in Java-Programmierung. Bis jetzt habe ich
dabei beinahe alle Probleme lösen können. Nun komme ich aber nicht weiter.
Im Internet konnte ich bis jetzt keine Hilfe finden, auch in diesem Forum war
nichts zu finden.

Ich will ein "Ober-"Model füllen das aus "Unter-"Modeln unterschiedlicher Größe
besteht.
Das Füllen scheint zu klappen. Aber es ist mir unklar, warum sich nach dem
Füllen der Models scheinbar das letzte eingefügte "Unter-"Model "durchsetzt"
- soll heißen, beim Füllen sind die "Unter-"Models unterschiedlich lang, doch
beim abschließenden Schleifedurchlaufen haben alle "Unter-"Models die gleiche
Länge.
Woran liegt das?

Für Hilfe bin ich dankbar.
Gerald

Java:
public class ListItem {
    private int nr;
    private String name;
    public ListItem (int nr, String name) {
        this.nr = nr;
        this.name = name;
    }
    public String getTitle () {
        return name;
    }
}
Java:
import javax.swing.DefaultListModel;
public class ListItemSuper {
    private int mdlNr;
    DefaultListModel<ListItem> model;
    public ListItemSuper (int mdlNr, DefaultListModel<ListItem> model) {
        this.mdlNr = mdlNr;
        this.model = model;
    }
    public int getM_Nr () {
        return mdlNr;
    }
}
Java:
import javax.swing.DefaultListModel;

public class ModelTest {
    public static void main(String[] args) {
        DefaultListModel<ListItem> mod;
        DefaultListModel<ListItemSuper> modSuper;
        int i, j, k, sm, md, n;
        mod = new DefaultListModel<>();
        modSuper = new DefaultListModel<>();

        for (i = 0; i < 4; i++) {
            mod.add(i, new ListItem(i, i + ".name"));
            modSuper.add(i, new ListItemSuper(i, mod));

            System.out.println("mod.size: "
                             + modSuper.getElementAt(i).model.getSize());
            for (n = 0; n < mod.getSize(); n++)
                System.out.println("Element: " + modSuper.getElementAt(i)
                                          .model.getElementAt(n).getTitle());
            System.out.println();
        }
        sm = modSuper.getSize(); System.out.println("modSuper.size: " + sm);
        for (j = 0; j < sm; j++) {
            k = modSuper.getElementAt(j).getM_Nr();
            System.out.println("Nr: " + k);

            md = modSuper.getElementAt(j).model.getSize();
            System.out.println("modSuper.ElementAt(" + j
                                                 + ").mod.size: " + md);
            for (n = 0; n < md; n++)
                System.out.println("Element: " + modSuper.getElementAt(j)
                                          .model.getElementAt(n).getTitle());
        }
    }
}
 

Dompteur

Top Contributor
Ich bin nicht sicher, ob ich deine Problembeschreibung richtig verstanden habe.

Aber du übergibst dem ListItemSuper Kontruktor immer das Listen-Objekt.
D.h. es gibt bei dir eine Instanz "mod", in die alle ListItems eingefügt werden. Dieses eine "mod" wird bei jedem Konstruktor-Aufruf von ListItemSuper übergeben und im erzeugten Objekt gemerkt.
Also zeigen alle ListItemSuper Objekte die gleiche "model" Liste.
 

Gerald

Mitglied
Hallo Dompteur,
ich denke Du hast richtig verstanden. Glaube auch, daß ich Deine Antwort verstehe.
In der 1. Schleife wird also nur ein neugefülltes "mod" angezeigt, es ist aber doch immer das selbe. Ich müßte jedoch ein eigenständiges "mod" erzeugen? Ja!
Danke!
 

Dompteur

Top Contributor
So ist es. Jedesmal, wenn du ein ListItemSuper Objekt erzeugst, müsstest du vorher ein mod Objekt erzeugen und befüllen.

Alternativ dazu kannst du im Konstruktur die übergebene Liste kopieren. Das würde das Verhalten deiner Klasse ändern. Aber vielleicht wäre das ohnehin gewollt ?
 

Gerald

Mitglied
Im Konstruktor kopieren, kopierendes Übergeben ist nicht möglich - denke ich.
Hab´s noch nicht gemacht, bis jetzt war das nur Theorie. - Aber bald.
Vielen Dank Dompteur für Deine Ratschläge!
 

Gerald

Mitglied
Kopieren im Konstruktor:
Java:
    public ListItemSuper (int mdlNr, DefaultListModel<ListItem> model) {
        int ii;
        this.mdlNr = mdlNr;
        if (this.model == null)
            this.model = new DefaultListModel<>();
        else
            this.model.setSize(0);
        for (i = 0; i < model.getSize(); i++)
            this.model.add(i, new ListItem(i, model.getElementAt(i).getTitle()));
        System.out.println("size(im Konstruktor): " + this.model.getSize());
    }
 

Dompteur

Top Contributor
Die Abfrage "if (this.model == null)" im Konstruktor ist unnötig.
Wenn du das schon absichern willst, dann wäre schon eher zu prüfen, ob der übergebene Parameter "model" ungleich null ist.

Aber abgesehen davon, ist es das, was ich gemeint habe.
Nun noch die Frage : Funktioniert es nun so wie du wolltest ?
 

Gerald

Mitglied
Ja, es funktioniert wie gewünscht.

Nun will ich aber doch noch wissen wie der Konstruktor sauber gestaltet wird.
Das Prüfen auf "model" == null halte ich für überflüssig, da wegen "i < model.getSize()" die Schleife ggf. nie durchlaufen wird.
Java:
    public ListItemSuper (int mdlNr, DefaultListModel<ListItem> model) {
        int i;
        this.mdlNr = mdlNr;
        this.model = new DefaultListModel<>();        // notwendig? ergibt immer "this.model.getSize == 0"?
        for (i = 0; i < model.getSize(); i++)
            this.model.add(i, new ListItem(i, model.getElementAt(i).getTitle()));
    }
 

Dompteur

Top Contributor
Die Prüfung des Parameters "model" auf null ist nötig, da sonst in for-Schleifen-Kopf "model.getSize()" eine NullPointerException auslöst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G Model View Controller Java Basics - Anfänger-Themen 7
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
W Befüllung einer Tabelle mit Checkbox, Trennung GUI und Model Java Basics - Anfänger-Themen 5
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
I Klassen Java Qt Model/View Datenhaltung Java Basics - Anfänger-Themen 4
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
C Bounded Range Model Java Basics - Anfänger-Themen 1
M Input/Output Vom Model zur Database? Java Basics - Anfänger-Themen 7
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
F MVC: Model Klasse erstellen Java Basics - Anfänger-Themen 3
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
C OOP Model View Controller - Prinzip Java Basics - Anfänger-Themen 6
L Eigenes List Model für Icon + String -> Speicherhungrig? Java Basics - Anfänger-Themen 8
S Forumlare nach dem MVC-Model Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
K Model-View-Controller Java Basics - Anfänger-Themen 15
K Frage zum Model View Controller Prinzip Java Basics - Anfänger-Themen 6
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
G Einbindung von MVC (Model-View-Controll) Java Basics - Anfänger-Themen 8
megachucky Model View Controller Pattern - Suche Hilfe bei Anwendung Java Basics - Anfänger-Themen 4
C JTable Model - getValueAt (int) Java Basics - Anfänger-Themen 3
G JTable mit eigenen Model neu zeichnen Java Basics - Anfänger-Themen 4
L Model einer Table bekommen Java Basics - Anfänger-Themen 6
E Model und i18n bzw. Properties Java Basics - Anfänger-Themen 10
P Tabelle mit Model -> getSelectedRow Java Basics - Anfänger-Themen 4
S Model-View-Controller Konzept Beispiel Java Basics - Anfänger-Themen 11
M model übergeben? Java Basics - Anfänger-Themen 16
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
K "Elegantes" Füllen eines Models? Java Basics - Anfänger-Themen 20
K Abstrahierung eines Models Java Basics - Anfänger-Themen 3
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
E MVC - ein View für mehrere Models Java Basics - Anfänger-Themen 2
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4
sashady 2D-Array mit Zahlenmuster füllen Java Basics - Anfänger-Themen 4
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
T Array füllen Java Basics - Anfänger-Themen 11
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
A Array richtig füllen Java Basics - Anfänger-Themen 2
krgewb Array später füllen Java Basics - Anfänger-Themen 1
E Arrays nach best Muster füllen Java Basics - Anfänger-Themen 4
A Ein Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 4
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
neerual Feld mit Einsen und Nullen füllen und überschreiben Java Basics - Anfänger-Themen 1
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
B Array via Schleife mit ungeraden bzw geraden Zahlen füllen Java Basics - Anfänger-Themen 7
T Best Practice Liste geschickt füllen Java Basics - Anfänger-Themen 5
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
A Methoden Array mit Methode nacheinander füllen Java Basics - Anfänger-Themen 3
T Arrays mit Schleife füllen Java Basics - Anfänger-Themen 11
D JComboboxen in Abhängigkeiten füllen Java Basics - Anfänger-Themen 7
K Array mit for-each Schleife füllen Java Basics - Anfänger-Themen 5
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
W String in einer Zeile mit Alphabet füllen? Java Basics - Anfänger-Themen 8
K String Array basierend auf int Array füllen Java Basics - Anfänger-Themen 2
Y Erste Schritte Spielfeld, Array füllen mit Treffern...?! Java Basics - Anfänger-Themen 3
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
K Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen Java Basics - Anfänger-Themen 11
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
B Methoden Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 4
B Methoden 2D Arrays füllen Java Basics - Anfänger-Themen 3
C zwei dimensionales array mit "1 " füllen Java Basics - Anfänger-Themen 8
H zweidimensionales array füllen Java Basics - Anfänger-Themen 6
JG12111989 2D Array mit Array[] füllen Java Basics - Anfänger-Themen 21
J Array mit Zahlen füllen Java Basics - Anfänger-Themen 28
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
T Progressbar füllen? Java Basics - Anfänger-Themen 3
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
L OOP Grafik in Circle Objekt füllen Java Basics - Anfänger-Themen 3
B Array erstellen,ausgeben,mit zufallszahlen füllen aber wie ? Java Basics - Anfänger-Themen 1
B Collections ArrayList füllen - Anfängerfrage Java Basics - Anfänger-Themen 1
M OOP Liste füllen mit Strings Java Basics - Anfänger-Themen 9
S Mehrdimensionales Array füllen Java Basics - Anfänger-Themen 1
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
P Ein Array mit der Eingaber der User füllen und ausgeben Java Basics - Anfänger-Themen 6
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
S JTabel korrekt mit Datensätzen aus ResultSet füllen Java Basics - Anfänger-Themen 4
I String mit Nullen füllen Java Basics - Anfänger-Themen 4
C JTextField füllen Java Basics - Anfänger-Themen 5
M Kann einen Array nicht füllen, im Nachhinein nur "null"-Werte Java Basics - Anfänger-Themen 11
M char Array füllen Java Basics - Anfänger-Themen 2
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben