JTextField request Focus

socke999

Erfahrenes Mitglied
Hallo,
ich habe ein JFrame und sobald ich einen jbutton drücke, soll in dieses Frame ein neues Panel eingefügt und angezeigt werden.

Das funktioniert soweit schun auch wunderbar.

Für das JPanel hab ich eine eigene Klasse geschrieben, namens KindPanel.
Dieses KindPanel hat dann mehrere JTextField's unter anderem das JTextField geburtsdatum.

Nun möchte ich, das sobald diese Panel angezeigt wird, das dieses geburtsdatum JTextField den Focus bekommt, also dass ich gleich den Curser in diesem JTextField habe zum eingeben.

Leider schaff ich es nicht, habs mit gebrutsdatum.requestFocus() und geburtsdatum.grabFocus() probiert. Hat leider nicht funktioniert!

Code:
class KindPanel extends JPanel
	{
		private JTextField vorname;
		private JTextField nachname;
		private JTextField geburtsdatum;
		
		
		public KindPanel()
		{
			super();
			this.setLayout(new GridLayout(3,2));
			vorname = new JTextField();
			nachname = new   JTextField();
			geburtsdatum = new JTextField();
			
			geburtsdatum.requestFocus();
			
			this.add(new JLabel("Geburtsdatum: "));
			this.add(geburtsdatum);
			this.add(new JLabel("Vorname: "));
			this.add(vorname);
			this.add(new JLabel("Nachname: "));
			this.add(nachname);
			
		
			this.setVisible(true);
		}
}


Weis jemand wie ich das mache?
 
Moin,

schonmal versucht, requestFocus() am Ende Deiner Methode aufzurufen?
Da Du ja in Deinem Code noch jede Menge Komponenten hinzufügst,
nehme ich mal an, dass der Focus einfach wieder verloren geht.
Also einfach erst alle Komponenten ausrichten und ganz am Ende den Focus setzen.

Gruß,
Xan
 
Ja das hab ich schon probiert ...

Ich hab es jetzt gelöst, man muss das so machen:
Code:
public KindPanel()
		{
			super();
			this.setLayout(new GridLayout(3,2));
			vorname = new JTextField();
			nachname = new JTextField(NewKundeForm.this.nachnameTextField.getText());
			geburtsdatum = new JTextField();
			
			geburtsdatum.requestFocus();
			
			this.add(new JLabel("Geburtsdatum: "));
			this.add(geburtsdatum);
			this.add(new JLabel("Vorname: "));
			this.add(vorname);
			this.add(new JLabel("Nachname: "));
			this.add(nachname);
			
		
			this.setVisible(true);
		
SwingUtilities.invokeLater(new Runnable() {
		         public void run() {
		            geburtsdatum.requestFocus();
		         }
		      });

}

Durch den neuen Thread und die Zeitverzögerung wird das richtig gesetzt, komisch, aber funktioniert nur so verlässlich.
 

Neue Beiträge

Zurück