# Shortcut für Buttons im JDialog?



## Sandera (17. Jan 2006)

Hallo zusammen,

ich habe einen JDialog in dem verschieden Buttons sind, die unterschiedliche Aktion ausführen.
Nun möchte ich, dass genau die gleichen Aktion auch per Shortcut (z.B. Strg + N) ausgeführt werden.
In einem anderen JDialog hab ich die Funktion einfach im JMenu integriert mittels setAccelerator, aber in diesem JDialog kann ich kein Menu gebrauchen.
Hab's bereits mittel button.setMnemonic() ausprobiert, aber das funktioniert nur, wenn der Focus in einem Feld meines JDialogs liegt und nicht wenn der Focus irgendwo anders ist. Ausserdem kann man mit dieser Funktion ja soweit ich weiß keine Shortcuts in Form Strg + Buchstabe erstellen, sondern nur Alt + Buchstabe.
Habt Ihr eine Idee wie ich Shortcuts realisieren kann, die im kompletten JDialog gelten egal wo der Focus ist?

Freu mich riesig über Eure Hilfe.

Gruß
Sandra


----------



## semi (17. Jan 2006)

Registriere das Tastenkürzel in InputMap und die dazugehörige Action in ActionMap des jeweiligen Buttons.
z.B.
	
	
	
	





```
...
Object actionKey = was auch immer, Hauptsache eindeutige Referenz
KeyStroke stroke = KeyStroke.getKeyStroke("ctrl X");
Action action = button.getAction();
InputMap inputMap = button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(stroke, actionKey);
ActionMap actionMap = button.getActionMap();
actionMap.put(actionKey, action);
...
```
Es wird immer ausgeführt, wenn das Dialogfenster Focus hat.


----------



## Beni (17. Jan 2006)

Oder benutz gleich Action's (am einfachsten mehrere innere Klassen die von AbstracAction erben). Eine Action kannst du einem Button übergeben, und die Action kann sich auch um die Details (wie Mnemonic, Accelerator, Tooltips, ...) kümmern.


----------



## Sandera (20. Jan 2006)

Super... vielen Dank für die Tipps.
Jetzt funktioniert's


----------

