# auslesen der Werte dynamischer Textfields



## loadbrain (10. Jul 2007)

Hallo,
ich generiere automatisch Textfelder, in die man dann Buchstaben per DragnDrop ziehen kann.
Sind alle Felder belegt, so möchte ich diese auslesen, komme aber absolut nicht an die Werte ran...

Die Felder werden so erstellt:

```
droppedBuchstabe = new JTextField[6];
        for (JTextField dB:droppedBuchstabe)
        {
            dB = new JTextField();
            System.out.println(dB.getText());
        }
```

so, versuche ich jetzt darauf zuzugreifen, über eine actionperformed mit einem button, so stehe ich vor dem Problem, dass ich ja wieder ein 

```
t = new JTextField[6];
        for (JTextField dB:t)
        {
            dB = new JTextField();
            System.out.println(dB.getText());
        }
```
machen muss, natürlch sin die Werte dann leer...

Wie macht man das????[/code]


----------



## mikachu (10. Jul 2007)

wenn du die nur auslesen willst...

```
for( JTextField tf : droppedBuchstabe )
{
    System.out.println( tf.getText() );
}
```


----------



## loadbrain (10. Jul 2007)

Das habe ich schon probiert, gibt leider eine 
java.lang.NullPointerException...


----------



## mikachu (10. Jul 2007)

hast du zwischendurch die JTextFields mit irgendeinem Text belegt?

#edit1:
weil ist klar, wenn noch nie die methode setText() aufgerufen wurde, sind die internen text-strings alle null


----------



## loadbrain (10. Jul 2007)

> hast du zwischendurch die JTextFields mit irgendeinem Text belegt?


Nein, die werden ja durch das DragnDrop gefüllt...
Du  meinst ich sollte dann beim "loslassen" quasi setText() des Textfeldes aufrufen?
Kann ich ja mal probieren...


----------



## SlaterB (10. Jul 2007)

wenn du etwas vorhandenes ausgeben willst,
dann musst du doch z.B. ein vorhandenes Array augaben,
dessen Textfelder auch in der GUI drin sind,

du scheinst ja (nicht persönlich gemeint) von nix ne Ahnung zu haben,
da ist das alles viel zu schwer für dich,

nur noch ein Tipp:
bei 
droppedBuchstabe = new JTextField[6]; 
        for (JTextField dB:droppedBuchstabe) 
        { 
            dB = new JTextField(); 
                  }

bleibt das Array leer, nur die lokale Variable db wird mit einem JTextField initialsiert,

um das Array zu füllen verwende die for-i-Schleife,
so wie ich im anderen Topic geschrieben habe


----------



## mikachu (10. Jul 2007)

superwebba hat gesagt.:
			
		

> Du  meinst ich sollte dann beim "loslassen" quasi setText() des Textfeldes aufrufen?


 :toll: 
...denk ich mal... aber wissen tu ich das nicht
ich hab noch nie mit D'n'D gearbeitet...


----------



## loadbrain (10. Jul 2007)

hm... das klappt nicht mal, wenn ich die Felder mit setText() vorbelege...


----------



## SlaterB (10. Jul 2007)

wie gesagt (siehe mein Post kurz zuvor): dein Array droppedBuchstabe ist wahrscheinlich leer


----------



## mikachu (10. Jul 2007)

vll tust du den jtextfield-array zwischendurch nochmal neu initialisieren...
aber ansonsten ist das eigentlich der normale workaround...
jtextfeld anlegen -> text setzen -> text abrufen

aber wie gesagt, ich hab noch nie mit drag'n'drop gearbeitet...

#edit1:
nimm dir am besten den rat von SlaterB zu herzen und mach es mit einer for-i-schleife

#edit2: AN ALLE 
dann ist also die for-each-schleife nur lesend, die for-i-schleife aber auch schreibend, oder wie ist das?


----------



## SlaterB (10. Jul 2007)

```
for(int i=0; i<droppedBuchstabe.length; i++) 
{ 
    JTextField dB = droppedBuchstabe[i]
    dB = new JTextField(); 
}
```
wäre genauso 'falsch', das ist ja nun kein großes Geheimnis


----------



## mikachu (10. Jul 2007)

```
for(int i=0; i<droppedBuchstabe.length; i++) 
{ 
    droppedBuchstabe[i] = new JTextField();
    droppedBuchstabe[i].setText( "test" );
}
```

...dann machen wir es doch gleich so


----------



## loadbrain (10. Jul 2007)

man, muss doch irgend ne möglichkeit geben oder ein workaround????


----------



## SlaterB (10. Jul 2007)

alles ist ganz einfach, du machst es nur falsch,
poste deinen ganzen Code (möglichst kurz)


----------



## loadbrain (10. Jul 2007)

ok.
das untere panel mit den leeren Textfelder, in die die buchstaben gezogen werden:


```
...
 for (JTextField dB:droppedBuchstabe)
        {
            dB = new JTextField();
}
            jPanelWortUnten.add(dB);
...
```

dann gibt es einen button, bei klick auf den soll überprüft werden, was in den Textfeldern steht.


----------



## SlaterB (10. Jul 2007)

dass 
dB = new JTextField(); 
schlecht ist steht ja wohl schon deutlich genug hier,
warum hast du das immer noch?..


----------



## loadbrain (10. Jul 2007)

wenn ich es weg mache bekomme ich eine java.lang.NullPointerException


----------



## SlaterB (10. Jul 2007)

du sollst es nicht wegmachen, sondern eine for-Schleife benutzen..

aber ich verabschiede mich nun wegen Hoffnungslosigkeit,
wenn dir die einfachsten Grundlagen fehlen und dazu noch das die Fähligkeien Fragen zu stellen/ Antworten zu versthen, 
dann wirst du bei solch hohen Programmen ständig auf Probleme stoßen, die du alleine nicht lösen kannst


----------



## loadbrain (10. Jul 2007)

sorry, sorry, du hast geschrieben:



> for(int i=0; i<droppedBuchstabe.length; i++)
> {
> JTextField dB = droppedBuchstabe_
> dB = new JTextField();
> } _


_

Richtig?
und darunter, 



			wäre genauso 'falsch', das ist ja nun kein großes Geheimnis
		
Zum Vergrößern anklicken....


Wie soll ich das bitte verstehen???_


----------



## SlaterB (10. Jul 2007)

ja, das ist auch falsch, auf die Frage von mika hin,

wie es richtig geht habe ich vorher gesagt: siehe anderes Topic,
und mika hat dahinter dann auch eine richtige Variante geschrieben..


----------



## loadbrain (10. Jul 2007)

au man sorry, die habe ich gar nicht gelesen... das wurde glatt überspurngen...
aber ich weiss jetzt was Du meinst, danke für die Geduld, werde weiter dran basteln, das klappt schon, morgen, übermorgen...


----------



## loadbrain (10. Jul 2007)

so, jetzt klappt es schon...
bin ja doch nicht so doof anscheinend...  :lol: 
Nicht für ungut SlaterB, hast mich ja auf die richtige Spur gebracht, danke auf jeden Fall!


----------

