Problème avec UndoableEditListener sur Document !

Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 - 15 juin 2006 à 14:09
Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 - 17 juin 2006 à 09:45
Bonjour bonjour !
Je travaille actuellement à refaire le bloc notes de Windows en Java avec quelques améliorations (qui sera plus tard encore amélioré vers un programme proche de Emacs). L'élément principal de ce programme est un JTextArea et j'ai placé un UndoableEditListener sur son Document. La classe qui implémente UndoableEditListener hérite d'un LinkedList dans lequel je range l'historique des actions effectuées. Quand un message "UNDO" est envoyé, j'actionne la méthode undo du UndoableEditEvent dans la liste, et je recule mon pointeur de positionnement, et pour "REDO" je fais l'inverse.
Ce système fonctionne bien àdeux détails près :
-> Chaque caractère entré ou supprimé génère un évènement individuel ... je souhaiterais rendre paramétrable de choisir si l'on veut que chaque action individuelle soit undoable/redoable , ou si à la façon d'autre programme il attende par exemple qu'un mot soit tapé, voir même une phrase complète... c'est pas très clair j'espère que vous voyez ce que je veux dire.
-> Gros problème là par contre lorsque que j'utilise dans mon JTextArea la méthode setText(""); il me génère deux évènements, le premier il remet le contenu complet à vide, et le deuxième est celui qu'on attend. J'ai bien cherché mais je ne trouve aucun moyen de me débarasser de cette cochonnerie d'évènement en trop... Et si j'éssais de le supprimer de l'historique ça me fout tout en l'air rien à faire !

Sinon j'me pause quelques questions ... quand on fait la combinaison Ctrl+H il supprime le caractère se trouvant juste avant le curseur (comme si on avait appuyé sur BACKSPACE)...

Si quelqu'un a une idée de réponse pour un de mes problèmes je suis tout ouï !
Cordialement, Taranael.

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...

1 réponse

Taranael Messages postés 54 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 21 juin 2007 1
17 juin 2006 à 09:45
Bon pour Ctrl+H mes recherches m'ont emmené jusqu'au site de Sun où j'ai trouvé qu'en fait au lieu de vérifier la combinaison de touches entrées, le JTextArea identifiait le signal qui pour Ctrl+H et pour BackSpace est le même : \b
Donc en fait faut récupérer le signal JTextArea et lui dire de rien faire :)

Par contre j'attends toujours une idée pour mon double évènement pour un setText ... ça a pas l'air interesser grand monde :)

L'ordinateur fait toujours ce qu'on lui demande !
Le problème c'est qu'il ne comprend pas ce qu'on lui demande ...
0
Rejoignez-nous