# Programmweite Shortcuts, Tastatureingaben



## Robinson (19. Mrz 2006)

Hi,

ich möchte in meinem Programm realisieren das auf bestimmte Tastatureingaben immer gleich reagiert wird.

z.B. Popup öffnen,...

hierzu würde ich gerne in meinem Frame eine Eingabe erkennen (z.B. F5) und dann eine entsprechende Funktion aufrufen.

Befindet sich der Cursor aber in einer untergeordneten Komponente (z.B. einem TexField innerhalb eines Panels auf meinem Frame) so scheint die Tastatureingabe nicht an diesen weitergereicht zu werden.

Wie erreiche ich dass alle Tastaturevents von meinem Frame registriert werden?


----------



## André Uhres (19. Mrz 2006)

http://www.java-forum.org/de/viewtopic.php?p=163974#163974


----------



## Robinson (5. Apr 2006)

Hi,

habe leider erst jetzt gesehen dass ich eine Antwort habe.
War sehr beschäftigt mit Klausuren.

Habe Dein Beispiel gerade getestet.
Es funktioniert auch super wenn ich mehrere Geschachtelte Jcomponent Klassen habe auf denen TextFields plaziert sind.

Ich habe auch JTable Komponenten in meiner Maske innerhalb dieser funktioniert es leider nicht.


----------



## André Uhres (6. Apr 2006)

Robinson hat gesagt.:
			
		

> ...Habe Dein Beispiel gerade getestet...Ich habe auch JTable Komponenten in meiner Maske innerhalb dieser funktioniert es leider nicht.


Unglücklicherweise wird im Beispiel die F2-Taste benutzt, die in JTable schon eine eingebaute Funktion hat:
sie bringt die fokusierte Zelle in den "edit mode".
Du kannst entweder eine andere Taste nehmen, oder die F2-Taste für JTable desaktivieren, dann geht's auch mit F2:

```
//  JTable: disable the F2 key
        InputMap im = mytable.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        im.put(KeyStroke.getKeyStroke("F2"), "none");
```


----------



## Robinson (6. Apr 2006)

Ok, super klasse.

Dann nehme ich die F5, die wollte ich eh.
Darafu bin ich nicht gekommen.

Ich habe in den letzten Tagen verscheidene Artikel von DIr zu ähnlichen Themen gelesen.
Wo finde ich einen guten Einstieg zu dem ganzen Thema Actions, KeyStrokes,... ?

Das sollte man doch auch nachlesen können welche Keys wo bereits definiert sind.

Auf jeden Fall schon mal


VIELEN DANK


Deine Beiträge haben mir diese Woche schon sehr viel Ärger genommen.


----------



## SamHotte (6. Apr 2006)

in java.awt.KeyEvent findest du diverse Konstanten für sog. "virtuelle Tastencodes", die alle mit "VK_" anfangen - damit lässt sich das meiste erledigen. In der API ist auch 'n Link auf ein Tutorial drin.


----------



## André Uhres (6. Apr 2006)

http://java.sun.com/docs/books/tutorial/uiswing/misc/keybinding.html


----------



## Robinson (6. Apr 2006)

Vielen Dank.

Wenn man einen Ansatz hat nach dem man sucht wirds viel einfacher.

Werde mich damit mehr beschäftigen müssen.


----------



## thE_29 (6. Apr 2006)

Problem ist das man auf STRG  + nicht abfragen kann!!!


Zumindest nicht auf beide gleichzeitig ^^


Da einmal VK_ADD und einmal VK_PLUS ist!

Es gibt zwar getKeyStroke(char, modifiere)

diese funktioniert aber nur wenn man nur einen Buchstaben mitübergibt und als modifier nix!

Wenn ich auch nur ein Shirt, oder Alt, etc als Modifier eingib, geht nix!!

Toller Schmafuu


----------



## André Uhres (20. Apr 2006)

thE_29 hat gesagt.:
			
		

> Es gibt zwar getKeyStroke(char, modifiere)
> diese funktioniert aber nur wenn man nur einen Buchstaben mitübergibt und als modifier nix!...


Hier ist ein funktionierendes Beispiel:
http://www.java-forum.org/de/viewtopic.php?p=183739#183739


----------



## thE_29 (20. Apr 2006)

Mh, und das geht dann mit STRG + +??

Weil bei mir geht das nicht!

Probier mal ob es auch mit dem Plus geht!


Ohne modifier, bzw mit Shift modifiere geht meins auch, aber nicht mit ALT oder STRG!!


----------



## André Uhres (20. Apr 2006)

thE_29 hat gesagt.:
			
		

> ..Probier mal ob es auch mit dem Plus geht!..


Es scheint nur zu funktionieren mit einem Zeichen das *keine Tastenkombination* erfordert,
sondern mit nur *einer einzigen Taste* erzeugt werden kann.
Die Kombinationstasten wie ALT und SHIFT werden dabei als modifier interpretiert 
und nicht als Teil der Tastenkombination für das Zeichen.
Mit VK_ADD und dem + Zeichen vom NUMPAD geht es bei mir,
auch in Verbindung mit modifier SHIFT.


----------

