JButton mit Enter bestätigen

TobKl

Mitglied
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
Java:
private JButton getBtnWeiter() {
		if (btnWeiter == null) {
			btnWeiter = new JButton("Weiter");
			btnWeiter.addActionListener(new BtnWeiterActionListener());
		}
		return btnWeiter;
	}
Und die innere Klasse
Java:
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ß
 
Ich hab das so gelöst: Ich erstelle einen KeyListener:

Java:
...
// 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:
Java:
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.
 
Zuletzt bearbeitet von einem Moderator:
Ich würde würde auch eher einen ActionListener verwenden oder sowas
Java:
JRootPane rootPane = frame.getRootPane();
rootPane.setDefaultButton(button2);
 
Java:
	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 );
	}
 
Zuletzt bearbeitet:
Java:
	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 );
	}

Viel zu umständlich dafür gibt es ja den ActionListener am Textfeld
 
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...
 

Neue Themen


Zurück
Oben