---
title: "Binda tangenttryckning till fönster"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/111616-binda-tangenttryckning-till-fönster"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "spango"
published: "2004-09-15T12:17:05.000Z"
updated: "2004-09-16T08:31:46.000Z"
replies: 4
views: 330
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/111616-binda-tangenttryckning-till-fönster"
---

# Binda tangenttryckning till fönster

## #1 — spango, 2004-09-15T12:17Z

En pinsam kunskapslucka har uppenbarat sig hos mig :r 

Hur binder man en tangenttryckning (typ Escape eller Alt-F4) till ett fönster? Normalt får man ju det automagiskt av miljön man arbetar i, men efter att ha övergått från GNOME till WindowMaker får jag inte längre några sådana gratissaker :( Tilläggas bör också att det inte finns (och inte någonsin kommer att finnas) menyer i min JFrame, så jag kan inte koppla tangenttryckningen till ett menyalternativ heller... 
Jag har desperat försökt koppla en KeyListener till min JFrame, samt till dess rootPane och contentPane, men inget verkar funka. Jag har dessutom försökt koppla tangenttryckningarna till inputMap:en i {root,content}Pane, men det funkar inte det heller.

Permalänk: https://www.webforum.nu/p/111616

## #2 — Viktor, 2004-09-15T12:34Z

Det som jag kan komma på är att du använder samma instans av en keylistener för alla komponenter och sedan i den först kollar om det är Esc eller Alt+F4 och om det inte är det så använder du event.getSource() för att få reda på vilken komponent som är aktiv, dvs var användaren är och trycker på knappen.

/Viktor

Permalänk: https://www.webforum.nu/p/1440161

## #3 — spango, 2004-09-15T22:39Z

Men blä. Det orkar jag ju inte göra...

Permalänk: https://www.webforum.nu/p/1440516

## #4 — Aleph_One, 2004-09-16T00:51Z

Så här kan du göra (för att tex stänga ett fönster med escape)

```
KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
Action escapeAction = new AbstractAction() {
	public void actionPerformed(ActionEvent e)
	{
		dispose();
	}
};
getRootPane().getInputMap(JComponent.WHEN_FOCUSED).put(escape, "ESCAPE");
getRootPane().getActionMap().put("ESCAPE", escapeAction);
```

Permalänk: https://www.webforum.nu/p/1440527

## #5 — spango, 2004-09-16T08:31Z

All your base are belong to Aleph_One. Tack som fan!

**\\r** Kanske skulle tillägga att WHEN_ANCESTOR_OF_FOCUSED_COMPONENT var mer i enlighet med vad jag hade föreställt mig än WHEN_FOCUSED :)

Permalänk: https://www.webforum.nu/p/1440593

---

Tråden på webben: https://www.webforum.nu/amne/java/111616-binda-tangenttryckning-till-fönster
