Array-ausgabe in Textarea

raphusi

Grünschnabel
Hallo Leutz
ich bin grad am basteln und zwar an nem Programm in dem ich Daten von Personen schreiben kann und diese in eine txt- Datei gespeichert werden. Ich möchte es aber so machen dass ich alles was ich eingebe in nem kleinen Textfeld wieder ausgegeben wird zum überprüfen.
Mein Problem: Ich schreibe zb was in jTextField1 hinein und speichere es in nem String Array an die Stelle [0]
so das mache ich mit allen Daten und somit hab ich 8 Einträge im Array, jedoch wenn ich es wieder ausgeben will und ich
Code:
jTextField2.setText(ausgabe[i]);
schreibe tut sich rein gar nix...
könnt Ihr mir da vl weiterhelfen?
danke schonmal im Vorraus
Raphael
 

vfl_freak

Premium-User
Moin,

Hallo Leutz
ich bin grad am basteln und zwar an nem Programm in dem ich Daten von Personen schreiben kann und diese in eine txt- Datei gespeichert werden. Ich möchte es aber so machen dass ich alles was ich eingebe in nem kleinen Textfeld wieder ausgegeben wird zum überprüfen.
Mein Problem: Ich schreibe zb was in jTextField1 hinein und speichere es in nem String Array an die Stelle [0]
so das mache ich mit allen Daten und somit hab ich 8 Einträge im Array, jedoch wenn ich es wieder ausgeben will und ich
Code:
jTextField2.setText(ausgabe[i]);
schreibe tut sich rein gar nix...
könnt Ihr mir da vl weiterhelfen?
habe es nicht wirklich verstanden ... und ohne Code .........

Gruß
Klaus
 

raphusi

Grünschnabel
ok sry war vl ein wenig viel :D

Code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String firma = (jTextField1.getText());
        String name = (jTextField3.getText());
        String grund = (jTextField4.getText());
        String sprache = (jTextField5.getText());
        String vt = (jTextField6.getText());
        String wt = (jTextField7.getText());
        String dv = (jTextField8.getText());
        String db = (jTextField9.getText());
       
        
        String[] arrayAusgabe = {firma, name, grund, sprache, vt, wt, dv, db };
        
        for(int i = 0 ; i <= arrayAusgabe.length ; i++){
             jTextField2.setText(arrayAusgabe[i]);
             System.out.print(arrayAusgabe[i] + ";" );// nur zur ueberpruefung!
        }
    }
es kommt einfach nicht im textField2 raus, jedoch im Direktausgabefenster von NET-Beans schon.. :/

gruß Raphi
 

sheel

I love Asm
Hi und Willkommen bei tutorials.de,

(ich glaub zu wissen, was du meinst).
Denk mal nach, was du machst.
Du willst alle 8 Strings anzeigen.
Das JTextField nimmt aber nur einen.

Du musst in einer Schleife alle Strings zusammenhängen, in einen einzigen rein...
und nicht nur einen der acht ins Textfeld übernehmen.
(Egal, was i bei [i] gerade für einen Wert hat, es ist immer nur einer von acht)

edit: Neuen Post gerade erst gesehen.
Ist genau das, was ich meinte.
+= statt = um anzuhängen nehmen.

Übrigens solltest du so einen Exception bekommen,
weil du 9 Strings in der Schleife durchgehen willst statt nur 8
(bzw. Swing bekommt die Exception und schluckt sie vermutlich)
0 1 2 3 4 5 6 7 8 sind 9 Stück.
Also < statt <= bei der Schleifenbedingung.

PS: Die Art, wie du dein Array anlegst, ist bei 8 Elementen ja noch möglich,
bei 8000 aber...
warum alles Einzelvariablen?
 

raphusi

Grünschnabel
Hallo danke mal für die schnelle Antwort!

ich verstehe was du meinst mit dn Einzevariablen nur wie soll ich das machen? ich habe ja 8 Textfelder... meine Ursprüngliche Idee war es ja alle Textfelder zu kombinieren und somit alles z.B. auf den Index 0 setzen, dann wenn man wieder einträgt das dann auf 1 usw.
nur weiß ich leider nicht wie ich das angehen soll... ich probier schon die ganze Zeit herum... Ich mein wir haben erst letztes Jahr in der Schule das mit den Arrays Listen usw.. gemacht und ich dachte mir mal setz dich hin in den Ferien und programmier mal ^^
lg Raphael
 

sheel

I love Asm
Was mit der Sache mit Index 0 etc. gemeint ist versteh ich zwar nicht, aber
folgender Code zeigt den gesamten Text von jTextField1/3/4/5/6/7/8/9 in jTextField2 an:

Java:
String gesamt = ""; //Leer
gesamt += jTextField1.getText();
gesamt += jTextField3.getText();
gesamt += jTextField4.getText();
gesamt += jTextField5.getText();
gesamt += jTextField6.getText();
gesamt += jTextField7.getText();
gesamt += jTextField8.getText();
gesamt += jTextField9.getText();
jTextField2.setText(gesamt);

Bei den einzelnen Textfeldern würde es eventuell auch Sinn machen,
die in ein Array zu tun, statt 9 Variablennamen zu erstellen.
Dann könnte man zB. auch hier in einer Schleife alle Textfelder durchgehen,
statt alle extra hinzuschreiben.
 

raphusi

Grünschnabel
danke für die schnelle Hilfe echt Spitze!
ich meine das so : also man schreibt alle Acht Strings in einen Array an die Stelle 0, so dass wenn man wieder was einträgt also wieder die Acht Strings, dass diese dann auf Index 1 gespeichert werden... usw.
weist du was ich meine?
lg Raphael

Erm was ich aber ganz ehrlich nich ganz gechekt hab ist: schreib ich bei deinem Array alles auf einen Index? oder läuft dass auch durch ? 1,2,3,4-... usw
lg Raphael
 

sheel

I love Asm
Verstanden.
Gegenfrage: Ein Array hat eine fixe Größe.
Was tun, wenn oft genug was eingetragen wurde, um es voll zu machen?

Wenn man harte Obergrenze haben will (außer der der Menge an verfügbarem Speicher
im Computer) bietet sich die ArrayList (oder die LinkedList) an.
(Mit reinen Arrays geht das schon auch, in dem man für eine Vergrößerung
ein neues größeres Array anlegt und den gesamten Inhalt vom alten ins neue kopiert.
Umständlich).

Für die ArrayList-Variante kann man den oberen Code ohne der letzten Zeile nehmen,
um zuerst einmal alle 8 Werte zusammenzusammeln.
Dann, falls die ArrayList-Variable al heißt, reicht ein einfaches
Java:
al.add(gesamt);

edit:
Oben ist gar kein Array.
 

raphusi

Grünschnabel
Verstanden.
Gegenfrage: Ein Array hat eine fixe Größe.
Was tun, wenn oft genug was eingetragen wurde, um es voll zu machen?



edit:
Oben ist gar kein Array.


wie ist die Frage gemeint? das versteh ich jetzt nicht ganz,
ich werd mal die JAVA -Doku durchforsten.. denn wir haben in der Schule nur ganz normale Listen gemacht(einfach verkettete,doppelt verketette, Ringlisten...). Oder meinst du genau das ?
lg Raphael

edit:
oh habe das nicht gesehen. wie frage ich dann diese Arraylist ab? bzw mein Problem besteht jetzt darin dass ich nichts überschreiben darf also wenn jetzt zb ein zweiter User kommt muss es eingetragen werden darf das Alte aber NICHT überschreiben..
 
Zuletzt bearbeitet:

Writtscher

Mitglied
Schneller überblick über eine Liste.

Code:
List<Etwas> neueEtwasList = new ArrayList<>();
neueEtwasList.add(new Etwas());
neueEtwasList.add(new Etwas());
neueEtwasList.add(new Etwas());

// oder

List<Etwas> neueEtwasListAberEtwasAnders = Arrays.asList(
    new Etwas(), new Etwas(), new Etwas() 
);

int etwasListGröße = neueEtwasList.size();

for (Etwas etwas : neueEtwasList) {
   mache(etwas);
}


Etwas erstesEtwas = neueEtwasList.get(0);
Etwas zweitesEtwas = neueEtwasList.get(1);
Etwas drittesEtwas = neueEtwasList.get(2);
// neueEtwasList.get(3); IndexOutOfBoundException

neueEtwasList.add(new Etwas());
Etwas neuHinzugefügtesEtwas = neueEtwasList.get(3);