Hallo zusammen.
Ich habe ein (hoffentlich kleines) Problem, bei dem mir nur komplexe Lösungen einfallen. Aber zuerst einmal zu Problem selbst:
Ich habe einen Dialog (soll später auch mal für das Hauptfenster, einen
gehen, aber das ist tertiär), der via ESC geschlossen werden kann (gleiche Wirkung wie das Fenster-X). Dies soll immer so sein, gleich welche Komponente den Fokus hat.
Ich habe es bisher über die
gelöst, was zumindest ansatzweise funktioniert:
( [c]closeWindow()[/c] ruft erstmal nur [c]setVisible(false)[/c] auf)
Das geht solange prima, bis ich den Fokus in irgendeine Komponente setze, dann nämlich schluckt diese die ESC-Taste.
Meine bisher einzige Lösung: Jede Komponente bekommt einen weiteren KeyListener welcher ESC abermals prüft. Das führt allerdings bei Tabellen zu wenig Erfolg, weswegen ich da nochmals separat ESC behandeln müsste.
In Kürze: Gibt es für solche Fälle eine direktere Lösung in Swing?
Ich habe ein (hoffentlich kleines) Problem, bei dem mir nur komplexe Lösungen einfallen. Aber zuerst einmal zu Problem selbst:
Ich habe einen Dialog (soll später auch mal für das Hauptfenster, einen
Code:
JFrame
Ich habe es bisher über die
Code:
InputMap
Java:
public MyDialog(String title) //extends JDialog
{
super(title);
//übrige Initialisierungen
this.getRootPane().getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "closeWindow");
this.getRootPane().getActionMap().put("closeWindow", new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
closeWindow();
}
});
}
Das geht solange prima, bis ich den Fokus in irgendeine Komponente setze, dann nämlich schluckt diese die ESC-Taste.
Meine bisher einzige Lösung: Jede Komponente bekommt einen weiteren KeyListener welcher ESC abermals prüft. Das führt allerdings bei Tabellen zu wenig Erfolg, weswegen ich da nochmals separat ESC behandeln müsste.
In Kürze: Gibt es für solche Fälle eine direktere Lösung in Swing?