JList-Probleme beim Hinzufügen von Elementen

Kutshi

Mitglied
Leider suche ich schon ne weile in meinem Programm nach eine Lösung für das Problem. Mein Programm soll in einer Liste eigentlich weitere Elemente hinzufügen ich bekomme es aber nur hin das er es mit dem LSring überschriebt oder gar nichts mehr da stehen hat. Hir der Quelltext:

Java:
String[] data = new String[1]; 
[...]
data[0] = "Links";
[...]
String[] neu = new String[data.length+1];
                int j;
                for(j = 0; j < data.length; j++){
                    data[j]= neu[j];
                }
                data[j-1] = tfopen.getText();
                larticle.setListData(data);

Da ich nicht viel Erfahrung hab und das das erste mal ist das ich in so ein Forum schreibe hoffe ich das ihr mir meine Fehler nicht zu erst nehmt 🙂
 
Ma ehrlich. Haste kein Debugger?

Zeile 1: data wird mit der Länge 1 initialisiert.
Zeile 3: dem Element 0 von data wird ein Wert zugewiesen. Element 0 ist das Einzige Element von data.
Zeile 5: neu wird mit der Länge 2 initialisiert ((länge von data=1)+1)
Zeile 7: Die Schleife startet mit j=0,
Zeile 8: data[0]=neu[0]. Da neu[0] noch nie ein Wert zugewiesen wurde, ist data[0]=null
Zeile 7: j wird um eins erhöht, j=1; Bedingung nicht erfüllt, Zeile 8 wird nicht noch einmal ausgeführt. Gut so, sonst Exception
Zeile 10: data[j-1], Glück gehabt, j=1, also wieder data[0] wird tfopen.getText() zugewiesen.
Zeile 11: und weitergegeben.

Also: Zeile 3 bis Zeile 7 machen was Tolles, aber Zeile 10 macht alles kaputt. Nochmal mit dem Debugger schauen, was du eigentlich willst.

Hatti
 
Hi,

dein Quelltext ist tatsächlich etwas wirr. Grundsätzlich verwechselst du schon einmal Arrays (gekennzeichnet durch diese []-Klammern) und Listen vom Kontext her.

List
Array

Du verwendest Arrays. Diese haben den Nachteil, dass es schwieriger ist zur Laufzeit ihre Größe zu ändern.

Der Fehler liegt (zumindest, wenn ich deinen Quelltext richtig deute) in der for-Schleife. Da der data-Array eine feste Größe von 1 hat, kann er nur einen String besitzen. Dort fügst du dann "links" ein an der position 0. Dann erzeugst du ein neues Array, dass um ein Feld größer ist als data, jedoch keinen Inhalt hat und ersetzt in der For-Schleife den (nicht vorhandenen Inhalt) des neu Arrays in den Data-Array. Daher ist "links" immer überschrieben.

Danach überschreibst du wieder den Inhalt deines Data-Arrays mit dem Inhalt eines Textfeldes.

Vielleicht solltest nochmal genauer erläutern, was du da eigentlich probierst, um etwas Klarheit zu schaffen.

Grüße,
ymene
 

Zurück
Oben