KeyListener für VK_ENTER

Lucien3000

Mitglied
Salve,
ich habe eine Passwortabfrage pogrammiert, in der es auf der Oberfläche 2 Textfelder gibt und 2 Buttons

ich habe bereits implementiert, dass ich mit TAB durch die Focusreihenfolge der Componenten switchen kann.
Da das während der Anwendung jedoch recht lästig ist würde ich gerne die ENTER-Taste einbinden.
und zwar soll man in das erste textfeld seinen usernamen eigeben, in das zweite sein Passwort UND wenn man dann auf enter drückt, dass dann automatisch der OKAY-Button ausgelöst wird und mann zum nächsten Bildschirm gelangt, ohne extra noch ein weiteres mal auf TAB drücken zu müssen.

ich habe das jetzt schon mit dem KeyListener probiert aber nicht hinbekommen, weil ich da irgendwie nicht dahinter komme :(

Freu mich über jegliche Art von Hilfe :)

grüße
Lucien3000
 
Moin,

also du musst den Keylistener zu deinen Textfeldern hinzufügen und in der keyPressed-Methode das VK_ENTER-Ereignis abfangen. In etwa so:

Code:
public void keyPressed (KeyEvent e) {
  if (e.getKeyEvent() == KeyEvent.VK_ENTER) {
    okayButton.doClick()
  }
}

Dann musst du natürlich deinem okayButton einen Actionlistener hinzufügen, der auf das doClick() reagieren kann.

Noch Fragen?
 
ich antworte mir einfach mal selber :)

und zwar habe ich es jetzt über den actionlistener hinbekommen *freu*

Code:
Button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // Aufruf einer eigenen Methode oder implementieren des eigenen Codes
            }
        });

Danke an alle die sich Gedanken gemacht haben ;-)
 
außerdem habe ich gerade gesehen dass es eine ähnliche Frage schon einmal gab!

sorry, den Beitrag hatte ich heute vormittag bei der Suche übersehn :nospam:
 
Eine Frage hab ich doch noch zu deiner Lösung mart.

wenn ich das so implementiere und einen ActionListener hinzufüge dann bekomme ich trotzdem noch eine Fehlermeldung in der zeile:
Code:
if (e.getKeyEvent() == KeyEvent.VK_ENTER) {

und zwar bei getKeyEvent()!

Da mosert er dann dass getKeyEvent keine definierte Methode für e ist.
Wie kann ich das beheben?

Gruß
Lucien
 
Moin,

sorry, ich meinte natürlich e.getKeyCode... kleiner Flüchtigkeitsfehler

Die e.getKeyEvent-Methode gibts tatsächlich nicht.
 
okay ... wenn ich im Buch eine Seite weitergebättert hätte, hätte ich da auch drauf kommen können :) *mein fehler*

Aber irgendwie versteh das mit dem ActionListener bzw mit dem ActionPerformed noch nicht so ganz.
Wie müsste denn so ein ActionListener bzw so eine ActionPerformed Methode aussehen?

das mit dem button.addActionListener (new ActionlListener) ist mir klar aber wie dann die ActionPerformed Methode implementiert werden muss versteh ich nicht.
 
Die actionPerformed-Methode gehört immer zu einem ActionListener und wird aufgerufen, wenn z.B. an einem JButton ein ActionEvent auftritt, bei dem der ActionListener registriert ist. In der actionPerformed-Methode sagst du einfach was passieren soll, wenn der JButton angeklickt wurde. Z.B.:

Code:
public void actionPerformed(ActionEvent e) {
  String text = myTextField.getText();
  //Jetzt kommt irgendein Methodenaufruf mit dem Text
  doSomethingWithText(text);
}

Also das is jetzt nur irgendein sinnloses Beispiel...

Ich hoffe das hilft dir weiter?
 
ich habe das jetzt so gemacht:

Code:
 public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			OK.doClick();
und der ActionListener mit der ActionPerformed sieht dann so aus:
Code:
 		OK.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
OK.doClick();
}
}

so stimmt es allerdings noch nicht , da es noch nicht funktioniert
 
Nee, das kann nicht funktionieren :-)

Mit OK.doClick(); in keyPressed() wird an deinen OK-Button ein ActionEvent ausgelöst (bei dir wenn du Enter drückst). Nun musst du in der actionPerformed-Methode, die ja bei einem ausgelösten ActionEvent aufgerufen wird, deine eigentliche Logik implementieren. Bei dir würde sich das irgendwie im Kreis drehen...

Für deine PasswortAbfrage stelle ich mir das so vor:

Code:
OK.addActionListener(new ActionListener( ) {

      public void actionPerformed(ActionEvent e) {
       String name = userTextField.getText();
       String pwd = String.valueOf(pwdTextField.getPassword());

       //deine Login-Methode aufrufen
       login(name, pwd);
        
      }
      
    });

Ok, das ganze hat den Sinn, dass du sowohl Enter drücken als auch deinen OK-Button anklicken kannst und die eigentliche Abfrage der TextFelder nur einmal machen musst.
 
Zurück