P
Perfibu
Gast
Hallo,
ich habe momentan bei meinem Programm das Problem, dass der hinzugefügte KeyListener nicht vernünftig reagiert.
Ich habe einen eigenen KeyListener geschrieben, der das Interface KeyListener implementiert und bei gedrücktem Enter automatisch auf den JButton button1 klickt. So sieht mein KeyListener aus:
Diesen KeyListener füge ich z.B. meiner Meldung (extends JFrame) hinzu.
Manchmal funktioniert der KeyListener nun garnicht, das heißt die Tastenkombination klappt von Anfang an nicht. In den anderen Fällen funktioniert sie zu Beginn, sobald ich jedoch in meinem Fenster irgendeine Stelle anklicke, kann ich sie nichtmehr benutzen.
Ziel sollte, sein, dass wann immer das Fenster fokussiert ist, das Betätigen von Enter einen Klick auf den button1 (OK) auslöst und das Fenster dann per ActionListener geschlossen wird.
Wie kann ich das erreichen? Füge ich denn nicht mit addKeyListener(...) einem JFrame einen KeyListener hinzu, der immer reagiert?
Ich hoffe ihr könnt mir weiterhelfen. Vielen Dank schonmal im Voraus,
Christoph
ich habe momentan bei meinem Programm das Problem, dass der hinzugefügte KeyListener nicht vernünftig reagiert.
Ich habe einen eigenen KeyListener geschrieben, der das Interface KeyListener implementiert und bei gedrücktem Enter automatisch auf den JButton button1 klickt. So sieht mein KeyListener aus:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class NotificationListener implements ActionListener, KeyListener{
private Notification n;
public NotificationListener(Notification n) {
this.n = n;
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("OK")){
n.setVisible(false);
n.dispose();
}
}
public void keyReleased(KeyEvent ke) {}
public void keyTyped(KeyEvent ke) {}
public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode() == KeyEvent.VK_ENTER){
n.button1.doClick();
}
}
}
Diesen KeyListener füge ich z.B. meiner Meldung (extends JFrame) hinzu.
Java:
public class Notification extends PerfibuWindow {
protected JButton button1;
//andere Konstruktoren der Einfachheit halber entfernt
public Notification(String title, String heading, String text,
int width, int height, int textWidth, int textHeight ){
//Standardvorgaben aus PerfibuWindow (extends JFrame) übernehmen
super(title, width, height);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//KeyListener hinzufügen
addKeyListener(new NotificationListener(this));
//Komponenten erzeugen... auch der Einfachheit halber weggelassen
}
}
Manchmal funktioniert der KeyListener nun garnicht, das heißt die Tastenkombination klappt von Anfang an nicht. In den anderen Fällen funktioniert sie zu Beginn, sobald ich jedoch in meinem Fenster irgendeine Stelle anklicke, kann ich sie nichtmehr benutzen.
Ziel sollte, sein, dass wann immer das Fenster fokussiert ist, das Betätigen von Enter einen Klick auf den button1 (OK) auslöst und das Fenster dann per ActionListener geschlossen wird.
Wie kann ich das erreichen? Füge ich denn nicht mit addKeyListener(...) einem JFrame einen KeyListener hinzu, der immer reagiert?
Ich hoffe ihr könnt mir weiterhelfen. Vielen Dank schonmal im Voraus,
Christoph