2015-12-12 2 views
1

Je veux intercepter une touche ou une combinaison de touches (dites 'b', Maj-b, Alt-b et Maj-Alt-b) qui est entrée dans le clavier pour une application Java Swing. Je veux faire cela pour chacune des touches du clavier. Une fois la clé piégée, je veux la remplacer par un autre caractère ou une chaîne de mon choix, et afficher le caractère ou la chaîne de substitution dans un objet JTextPane, au même endroit dans le JTextPane où le caractère original a été tapé.Comment mapper une entrée de clavier en Java Swing vers un autre caractère ou une autre chaîne?

L'idée est de mapper les touches d'un clavier QWERTY normal aux caractères d'un autre script et d'un autre langage, comme l'hindi.

Je suis capable de piéger les touches du clavier QWERTY très bien, en utilisant le type de code suivant:

JTextPane textPane = new JTextPane(); 
KeyStroke key = KeyStroke.getKeyStroke('b'); 

InputMap inputMap = textPane.getInputMap(); 
inputMap.put(key, DefaultEditorKit.forwardAction); 

Cependant, pour le InputMap, je ne suis en mesure de remplacer la combinaison de touches pour un autre « Action » comme DefaultEditorKit.forwardAction, pas un autre caractère ou une chaîne. Je n'ai pas nécessairement à utiliser un InputMap - toute méthode qui me permet de mapper une entrée de clavier à un autre caractère ou une chaîne serait bien.

Merci, Sandeep

+0

Crossposted: http://www.coderanch.com/t/658968/GUI/java/map-Keyboard-Entry-Java-Swing – camickr

Répondre

0

Vous pouvez consulter le DefaultKeyTypedAction de la classe DefaultEditorKit pour voir comment vous pouvez lier vos clés.