# Fenster soll sich bei auf Druck auf ESC schließen



## BigmasterDenis (17. Aug 2006)

Hi Leute!

Ich möchte erreichen, dass sich ein JFrame per Druck auf die ESC-Taste schließen lässt.  Habe es mit der folgenen Methode versucht:


```
public void keyPressed(KeyEvent k)
	{	    		
	    if(k.getKeyCode()==KeyEvent.VK_ESCAPE)
	    {  	
                setVisible(false);
	    }
	}
```

Das Frame jedoch, lässt sich vom Druck auf ESC leider völlig unbeeindruckt. Was mache ich falsch? Muss die Methode nicht automatisch greifen, wenn ich irgendwann auf ESC drücke?


thanx4help


----------



## Wildcard (17. Aug 2006)

Das funktioniert deshalb nicht, da nur Komponenten die fokusierbar sind und den Fokus besitzen KeyEvents empfangen.
Wenn das so eine Art globaler Hotkey sein soll, dann kannst du mit hilfe des Toolkits einen AWTEventListener registrieren, der dann alle Events bekommt.


----------



## BigmasterDenis (17. Aug 2006)

> mit hilfe des Toolkits einen AWTEventListener registrieren



??? aber wie ???


----------



## Wildcard (17. Aug 2006)

```
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
		
	public void eventDispatched(AWTEvent event)
	{
		// TODO Auto-generated method stub
		
	}
		
}, AWTEvent.KEY_EVENT_MASK);
```


----------



## foobar (17. Aug 2006)

Du kannst auch in deinem JFrame sowas machen:

```
getRootPane().registerKeyboardAction(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        // do something
                    }
                },KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0), JComponent.WHEN_IN_FOCUSED_WINDOW);
```


----------



## BigmasterDenis (17. Aug 2006)

Wow, Danke.

Sieht beides recht kompliziert aus auf den ersten Blick. Aber hilft mir bestimmt weiter    .


----------

