Nb de caractère dans un JTextArea [Résolu]

Cyberdevil 483 Messages postés mardi 10 juillet 2001Date d'inscription 12 juillet 2006 Dernière intervention - 12 juil. 2006 à 11:15 - Dernière réponse : Twinuts 5279 Messages postés dimanche 4 mai 2003Date d'inscription 19 septembre 2018 Dernière intervention
- 12 juil. 2006 à 13:40
Bonjour tout le monde !

J'ai un petit problème en java....
En fait j'aimerais savoir le nb de caractère qu'il y a dans un JTextArea en "temps réel" ! Alors j'ai ajouter un keyListener à mon JTextArea mais le problème c'est que quand l'événmenet est généré et ben le caractère n'est pas encore ajouté au JTextArea. Donc si je fais un monTextArea.getText().length() et ben il me manquera un caractère. Et si je fais +1 ca pose problème car admettons que lutilisateur appuise sur backspace ou une flèche et ben ça comptabilisera un caractère faux jusqu'au prochain appui... J'espère que quelqu'un à la solution !

Je vous remerci d'avance

Cyberdevil
http://projects.xwaves.net
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Twinuts 5279 Messages postés dimanche 4 mai 2003Date d'inscription 19 septembre 2018 Dernière intervention - 12 juil. 2006 à 11:50
3
Merci
Salut,


regarde du coté de setDocument et redefinie le Document

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/Document.html


il y a pas plus temps reel et tu as la maitrise des insertion et supression de char

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Twinuts
Cyberdevil 483 Messages postés mardi 10 juillet 2001Date d'inscription 12 juillet 2006 Dernière intervention - 12 juil. 2006 à 12:55
0
Merci
Excellent !

Merci beaucoup ça fonctionne parfaitement.

Pour information:
J'ai redéfini la classe PlainDocument et j'ai réimplémenté les méthode removeUpdate et insertString de cette classe. Dans ces méthode j'incrémente une varaible compteur de caractère. Et je met à jour mon label passé en paramètre dans la méthode constructeur de ma nouvelle classe. Ca donne ça:

public class SMSDocument extends PlainDocument {
   
    JLabel lblStatus;
   
    int nbChar=0;
   
    public SMSDocument(JLabel lblStatus)
    {
        super();
        this.lblStatus=lblStatus;
    }
    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
    {
        nbChar-=chng.getLength();
        updateLabel();
    }
   
    void updateLabel()
    {

      /* Met à jour le label avec le nb de char */
      /* ... */
    }
   
    public void insertString(int offs,
            String str,
            AttributeSet a)
     throws BadLocationException
     {
        super.insertString(offs, str, a);
        nbChar+=str.length();
        updateLabel();
     }
}

Pour utilisé:

JLabel lbl=new JLabel("Nb char: 0");
JTextArea txt=new JTextArea("");
txt.setDocument(lbl);

Et voila :-) !!

Merci encore twinuts pour cette très bonne idée !

Cyberdevil
http://projects.xwaves.net
Commenter la réponse de Cyberdevil
Cyberdevil 483 Messages postés mardi 10 juillet 2001Date d'inscription 12 juillet 2006 Dernière intervention - 12 juil. 2006 à 12:58
0
Merci
Oups une petite erreur s'est infiltrée (apparemment ça fonctionne quand meme mais bon):

La méthode removeUpdate doit être celle la et pas celle du message précédent:

    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
    {
        super.removeUpdate(chng);
        nbChar-=chng.getLength();
        updateLabel();
    }

J'avais oublié l'appel à la méthode originale !

Cyberdevil
Commenter la réponse de Cyberdevil
Twinuts 5279 Messages postés dimanche 4 mai 2003Date d'inscription 19 septembre 2018 Dernière intervention - 12 juil. 2006 à 13:40
0
Merci
Mais de rien

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.