Listener

Saban

Erfahrenes Mitglied
Hallo Zusammen!

ich habe eine Reihe mit 5 JTextFields. Ich lasse das erste anzeigen und die anderen 4 auf
Java:
 textfield.setVisible(false)
ausblenden. Nun möchte ich das jedes mal wenn ein TextFeld mit Inhalt befüllt ist das nächste anzeigen lassen. An sich ist das kein Problem und funktioniert auch einwandfrei. Ich habe dafür einen KeyListener genommen.
Nun möchte ich natürlich auch das wenn der Inhalt in einem gelöscht wird das der wieder ausgeblendet wird, da ich aber keine Lücke drin haben will sollen die anderen aufrücken. Ich habe mir nun überlegt ich lasse einen zähler mit laufen wie viele TextFields grad aktiv sind und sage dann wenn der Eintrag von einem TextField gelöscht wird

- Nehme den Eintrag des letzten TextFields und setze ihn in aktuellen
- Letztes TextField setVisible(false)
- Zähler--

Rein theoretisch finde ich die Idee toll aber das Problem ist das ich nicht weiß was für einen Listener ich hernehmen soll bzw welcher am besten geeignet ist ich habs mit einem KeyListener probiert aber der hat sich mit meinem PlainDocument in die Haare gekriegt. Die Textfelder sind nämlich mit einem PlainDocument versehen welches die Eingaben des Users einschränken und die Zeichen begrenzen soll. Der Zähler wurde aber trotzdem hochgezählt obwohl das TextField schon gefüllt war. Also TextFeld war befüllt und wenn man weiter getippt hat hat der KeyListener einfach den Zähler erhöht.

Kann mir jemand helfen? Bin dankbar für jeden Tip!

MfG
Saban
 
Zuletzt bearbeitet von einem Moderator:
Hmm GUI Technisch ist das aber sehr unschön Felder komplett auszublenden. Warum machst du sie denn nicht nur nicht editierbar?

Was für ein Layout verwendest du denn? Ich meine eigentlich werden nicht sichtbare Komponenten auch im Layout nicht beachtet und damit würde alles automatisch hochrutschen wenn man neu layouten lässt.
 
Hi!

Ich benutze kein Layout ich mach alles mit .setBounds.
Ja ich könnte auch auf nicht editierbar setzen aber das Problem bleibt doch das selbe oder? Welchen Listener nehme ich dann her? oder stehe ich grad aufm Schlauch

MfG
Saban
 
Hallo,

Schau dir doch mal den DocumentListener an. Da wird immer ein Event ausgelöst, wenn was im Textfeld verändert wird.
Statt dem KeyListener kannst du den ActionListener verwenden. Dieser reagiert immer, wenn du im Textfeld Enter drückst.

MFG

Sascha
 
Hi!

Den DokumentListener schau ich mir mal an... Danke!
Ich will das alles ohne Enter realisieren darum fällt der ActionListener schon mal weg!

MfG
Saban
 
Woher willst du denn wissen, dass jemand in einem Textfeld fertig ist? Mit Enter beendest du die Eingabe.

MFG

Sascha
 
@zeja
Das ist schon klar. :)
Aber er meinte oben, dass er extra nen KeyListener implementiert hat. Also gehe ich von aus, dass er das mit der Tastatur machen möchte. ;-)

MFG

Sascha
 
Eigentlich brauch man einen Listener für alles was dazu führen kann dass das Textfeld verlassen wird. Dann prüft man ob da noch was drin steht und dann ist gut.

Also auf jeden Fall einen FocusListener mit focusLost (Wegklicken und Tab) und einen ActionListener falls die Eingabe mit Enter beendet wird.
 
Zurück