Variablen For Schleife, Variable in String inkrementieren

Rob_In_Hood

Mitglied
Einen schönen Abend euch 🙂
ich schreibe gerade ein kleines Programm in dem es darum geht einen zusammen gesetzten String auszugeben. ich habe eine swing-gui mit Textfields tf_t_1...18 und Textfields tf_f_1...18 diese möchte ich jetzt innerhalb einer For-Schleife auslesen mein Ansatz ist

Java:
for(int i = 1; i<= 18; i++) {   
		        
      ausgabe=ausgabe.concat("|").concat(tf_t_i.getText()).concat("=").concat(tf_f_i.getText());
Das geht so nicht. Die Frage ist wie kann ich die Schleifenvariabel benutzen um die einzelnen Textfields anzusprechen?

Vielen Dank schon mal 🙂
 
In dem du alle deine Textfelder in ein Array speicherst und danach drüber iterierst:

Java:
JTextField[] fields = ...;

for(int i = 0; i < fields.length; i++) {
    System.out.println(fields[i].getText());
}
 
Danke dir für die schnelle Antwort! 🙂 dachte ich könnte das irgendwie umgehen aber habe es jetzt gemacht. Leider bekomme ich beim Zugriff auf dieses Array eine NullPointerException...

Java:
private String ausgabe;
private JTextField tf_f_1;
	private JTextField tf_f_2;
	private JTextField tf_f_3;
	private JTextField tf_f_4;
	...
	private JTextField tf_t_1;
	private JTextField tf_t_2;
	private JTextField tf_t_3;
	private JTextField tf_t_4;
        ...
private JTextField[] tfields = {tf_t_1, tf_t_2, tf_t_3, tf_t_4, ...};
private JTextField[] ffields = {tf_f_1, tf_f_2, tf_f_3, tf_f_4, ...};

ausgabe = ausgabe.concat(tfields[0].getText());

denke mal es handelt sich hier um einen Anfängerfehler... aber wenn ich das jetzt nur so anspreche müsste doch auf jeden Fall ein Wert zurück kommen. Das Feld ist natürlich jedes mal beschrieben worden. Wenn ich tf_t_1 konkateniere funktioniert es. Also nehme an dass das Problem bei dem Array liegt 🙁
 
Ja initialisieren musst du sie auch noch irgendwo (am besten im Konstruktor oder in einer init-Funktion):

Java:
for(int i = 0; i < tfields.length; i++) {
    tfields[i] = new JTextField();
}
...

Und das gilt natürlich für ffields auch!
 
hmm hatte ich das nicht schon mit den Zeilen 12 und 13 gemacht? :/
will ungern einfach neue erzeugen da ich die Felder eigentlich schon im zweiten erstellt habe und zwar nach folgendem Schema:
Java:
tf_f_1 = new JTextField();
		tf_f_1.setBounds(185, 43, 429, 20);
		contentPane.add(tf_f_1);
		tf_f_1.setColumns(10);

mir ist aber aufgefallen, dass ich ja etwas an die "ausgabe" konkateniere wo aber noch nichts drin ist, glaube das ist auch der Fehler werde mir das jetzt nochmal alles genau angucken und es auf jeden Fall mit dem JTextField Array machen.
Danke nochmal und einen schönen Abend!

:Edit: Habs jetzt hinbekommen 🙂 hatte die felder im zweiten Konstruktor deklariert, Habe das ganze dann mit this.tfields = tfields;
this.ffields = ffields gelöst.

So jetzt ist das ganze gelöst vielen Dank nochmal!
 
Zuletzt bearbeitet:
Leider bekomme ich beim Zugriff auf dieses Array eine NullPointerException...

Java:
private String ausgabe;
private JTextField tf_f_1;
	private JTextField tf_f_2;
	private JTextField tf_f_3;
	private JTextField tf_f_4;
	...
	private JTextField tf_t_1;
	private JTextField tf_t_2;
	private JTextField tf_t_3;
	private JTextField tf_t_4;
        ...
private JTextField[] tfields = {tf_t_1, tf_t_2, tf_t_3, tf_t_4, ...};
private JTextField[] ffields = {tf_f_1, tf_f_2, tf_f_3, tf_f_4, ...};

ausgabe = ausgabe.concat(tfields[0].getText());

Das Problem ist das deine JTextFields noch nicht initialisiert sind sobald das Array erstellt wird. Somit steht in beiden Arrays nur null drinnen. (Ich kann nicht auf etwas referenzieren was nicht da ist)

Du musst zuerst die JTextFields initialisieren und dann erst das Array befüllen!
 

Zurück
Oben