Überwachung mehrerer Textfelder

Status
Nicht offen für weitere Antworten.

Donut

Bekanntes Mitglied
Also.
Ich habe folgendes problem:
Ich habe 6 Textfelder (davon können 2 mal aktiv sein, mal nicht) und ich will praktisch eine Live-Überwachung aller Felder gewährleisten.

So.
Ich dachte mir, ich mach das per KeyEvent. Wenn ich also ne Taste drücke, fragt er das 'aktive' Feld ab. Dabei entstehen 2 Probleme:

1. Wenn ich in ein Feld eine Zahl eintippe scheint das Textfeld nicht "schnell genug" zu sein: Wenn ich eine Zahl eintippe (Bsp: 5) ist der abgefragt Wert noch der Anfangswert (0). Wenn ich nu eine zweite Ziffer eintippe (Bsp.:4) fragt er wieder das Feld ab, 'erwischt' aber nur die 5 von vorher -> die entsprechende variable ist 5 statt 54. Wie bekomme ich das Programm dazu praktisch erst einmal die Zahl ins Textfeld einzutragen und dann erst abzufragen?

2. Wenn ich auf eine Taste haue unterscheidet das Programm bis jetzt nicht zwischen den Textfeldern. D.h. ich müsste bei einem Tastenschlag alle abfragen, das will ich aber nicht. Wie kann man herausbekommen welche Komponente im gesamten Fenster gerade den Focus hat? (irgendwas mit FocusManager?)
 
Code:
	public void keyTyped(KeyEvent e)
	{
		try
		{
			n = Integer.valueOf(bo_textfield_breite.getText()).intValue();
		}
		catch(NullPointerException ex1){//Behandlung
                }
		catch(NumberFormatException ex2){//Behandlung
		}
	}

ich habs mit keyTyped gemacht.

und das war der Hinweis den ich braucht *sich selbst schlag* :roll:

klar, mit keyReleased() gehts ^^ danke

zum FocusListener: da setz ich mich ma ran. :###


edit:

joa jetzt gehts auch. ich habs folgendermaßen gelöst:

Beim Fokus wird ein zugehörigen booelan-Wert des jeweiligen Feldes auf true gesetzt. Drück ich jetzt ne Taste, fragt er beim keyReleased ab, welche der 6 variablem true ist und aktualisiert die Variable, die den Wert speichert. is das okay so, oder geht das noch eleganter? (vll ohne umweg über die boolean-Variablen?)
 
"evt.getSource()" gibt das Objekt (JTextField) zurück wo das Event stattfand.
Wenn nur der Inhalt des Feldes benötigt wird, dann genügt:
Code:
((JTextField)evt.getSource()).getText()
Die Herkunft des Textes kann so abgefragt werden:
Code:
        if( (JTextField)evt.getSource() == jTextField1 ){
            ...
        }

...mit "Event" meine ich "KeyEvent".
"FocusListener" wird also hier nicht benötigt.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben