# JButton mit Enter bestätigen



## TobKl (14. Jan 2012)

Hallo,
ich habe ein Textfield im dem ein Benutzer seinen Usernamen eingibt. Nun soll der Button "Weiter" durch Anklicken mit der Maus bzw. durch Betätigen der "Enter"- Taste ausgelöst werden. Habe schon gelesen das man eine KeyListener verwenden soll. Bisher hat es leider nicht geklappt. 
Nachfolgend der Code

```
private JButton getBtnWeiter() {
		if (btnWeiter == null) {
			btnWeiter = new JButton("Weiter");
			btnWeiter.addActionListener(new BtnWeiterActionListener());
		}
		return btnWeiter;
	}
```
Und die innere Klasse

```
private class BtnWeiterActionListener implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			...
hier steht, was der Button Weiter tun soll, ist aber hier nicht relevant
		}
	}
```

Vielen Dank schonmal für die Hilfe
Gruß


----------



## Camino (14. Jan 2012)

Ich hab das so gelöst: Ich erstelle einen KeyListener:


```
...
// Bei ENTER-Taste gleiche Aktion wie bei NEU-Button
		KeyListener tfKeyListener = new KeyAdapter() {
			public void keyPressed(KeyEvent evt) {
				if (evt.getKeyCode() == KeyEvent.VK_ENTER)
					meinButton.doClick();
			}
		};
...
```

Und den kann ich dann dem Textfeld hinzufügen:

```
meinTextfeld.addKeyListener(tfKeyListener);
```

Wenn ich dann im Textfeld was eingegeben habe und die ENTER-Taste drücke, ist das so, als würde der Button geklickt.

Oder halt eine Methode definieren, welche die Aktion ausführt, und die dann jeweils beim KeyListener des Textfeldes und beim ActionListener des Buttons aufrufen.


----------



## xehpuk (14. Jan 2012)

Hi.

JTextField#addActionListener(java.awt.event.ActionListener)


----------



## Gast2 (14. Jan 2012)

Ich würde würde auch eher einen ActionListener verwenden oder sowas

```
JRootPane rootPane = frame.getRootPane();
rootPane.setDefaultButton(button2);
```


----------



## California (16. Jan 2012)

```
public static void assignButtonAction( AbstractButton button, KeyStroke keyStroke, String methodName, Action action ) {

               button.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put( keyStroke, methodName );
               button.getActionMap().put( methodName, action );
               button.addActionListener( action );
	}
```


----------



## Gast2 (16. Jan 2012)

California hat gesagt.:


> ```
> public static void assignButtonAction( AbstractButton button, KeyStroke keyStroke, String methodName, Action action ) {
> 
> button.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ).put( keyStroke, methodName );
> ...



Viel zu umständlich dafür gibt es ja den ActionListener am Textfeld


----------



## California (16. Jan 2012)

> Viel zu umständlich dafür gibt es ja den ActionListener am Textfeld



Hast Du vielleicht den Thread durchgelesen?
Deise Funktion ordnet dieselbe Action 
- einem Key (z.B. Enter)
- und dem Button-actionListener zu

Wenn man kritisiert, sollte man sich ansehen, was man kritisiert...


----------



## Gast2 (17. Jan 2012)

California hat gesagt.:


> Wenn man kritisiert, sollte man sich ansehen, was man kritisiert...



Keine Angst ich weiß was es macht, trotzdem muss für die kleine Aufgabe nicht die ActionMap erweitern...


----------

