# Fokus auf ein Textfeld setzen? Wie?



## Bart S. (28. Feb 2006)

Hallo,

ich habe einen Frame der nebeneinander zwei JPanels enthält (PR und PL). Das JPanel PR hat mehrere JTextFields und ich möchte den Fokus auf ein TextFeld setzen, sodass man es nicht erst anklicken muss, bevor man was eingeben kann. 

Wie setzte ich den Fokus?

JTextField t1...
t1.grabFocus() geht nicht.


----------



## Roar (28. Feb 2006)

requestFocus[InWindow]()


----------



## Bart S. (28. Feb 2006)

Aber geht das einen klitze kleinen Tick ausführlicher... Bin ANFÄNGER!!!!


----------



## Roar (28. Feb 2006)

statt grabFocus() einfach mal versuchen requestFocus() zu verwenden? :bahnhof: mehr gibs dazu nix zu sagen


----------



## Bart S. (28. Feb 2006)

Funktioniert auch nicht!


----------



## Roar (28. Feb 2006)

hm, doch, eigentlich schon. dann führst du den code wahrscheinlich an der falschen stelle aus. setz das requestFocus() mal dorthin, wo deine komponenten shcon sichtbar sind. also nach dein setVisible(true);

edit: ansonsten zeig mal mehr code


----------



## Guest (1. Mrz 2006)

Roar hat gesagt.:
			
		

> hm, doch, eigentlich schon. dann führst du den code wahrscheinlich an der falschen stelle aus. setz das requestFocus() mal dorthin, wo deine komponenten shcon sichtbar sind. also nach dein setVisible(true);
> 
> edit: ansonsten zeig mal mehr code



wenn ich mich nicht täusche muss man die pack()-Methode vom Frame oder mindestens vom entsprechenden Panel vorher aufrufen, sonst funktioniert requestFocus() nicht.


----------



## Beni (1. Mrz 2006)

Anonymous hat gesagt.:
			
		

> wenn ich mich nicht täusche muss man die pack()-Methode vom Frame oder mindestens vom entsprechenden Panel vorher aufrufen, sonst funktioniert requestFocus() nicht.


Wie kommst du darauf? pack berechnet lediglich die ideale Grösse des Fensters, und hat das 0 und nix mit dem Focus zu tun. Ansonsten: siehe Roar's Beitrag.


----------



## Eminent (6. Mrz 2006)

Beni hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...



Hi,

also ich denke schon, dass da was mit der pack()-methode war, probiert doch z. B. mal folgenden Code aus...


```
JFrame frame = new JFrame("GUI-Test");
      JPanel coPane = (JPanel) frame.getContentPane();
      SKCancelButton button = new SKCancelButton(this, "Fertig");
      coPane.add(button, BorderLayout.SOUTH);

      JTextField tfLinks = new JTextField("Links");
      JTextField tfRechts = new JTextField("Rechts");
      coPane.add(tfLinks, BorderLayout.WEST);
      coPane.add(tfRechts, BorderLayout.EAST);   

      // Framegröße setzen
      //  frame.setSize(200, 150);
      frame.pack();

      // Focus setzen
      tfRechts.requestFocus();  
      frame.setVisible(true);
```

Wenn du frame.pack(); nimmst um die größe des Frames anzupassen funktioniert tfRechts.requestFocus();.
Nimmt man dagegen frame.setSize(200, 150); um die größe anzupassen funktioniert tfRechts.requestFocus(); nämlich nicht. (Zumindest bei JDK 1.4.2_01)


----------

