Bonjour tout le monde,

Je souhaite faire un logiciel qui lit une chaine de caractères dans un JTextPane et lui applique des transformations, le tout en live.
J'illustre mes propos :
Vous tapez sur votre clavier un mot. A chaque caractère tapé, un analyseur va regarder s'il peut modifier la chaine et lorsqu'il possède un mot dans sa bibliothèque alors il remplace le mot.

Par exemple : je tape "chat" et dans mon JTextPane il m'excrira "matou".

Bon pour les curieux qui se demande à quoi ça va me servir, je veux pas remplacer "chat" par "matou" mais transformer l'écriture romaine en japonais : si je tape ka il va m'écrire le symbole か.

J'ai déjà fait beaucoup de choses mais je bute sur le remplacement (et surtout trouver une méthode optimale).
Pour le moment, j'écoute l'évènement keyTyped() du JTextPane qui m'indique la touche appuyée et je peux parcourir mon arbre en même temps que la saisie. A chaque mot complet, je récupère le String et je le met dans un objet de type StringBuffer. Grâce au fonction delete et insert j'arrive à transformer ma chaine que je reinjecte au widget.
MAIS le problème est que l'action keyTyped() est éffectuée avant l' écriture sur le JTextPane.
C'est-à-dire que si je tape "chat" , il va correctement le supprimer et écrire "matou" mais il rajoutera le t de chat soit "matout".

Bref j'aimerai régler le problème de transformation et aussi optimiser (éviter de récuperer le string et le réinjecter ?)

Merci pour votre aide !