IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTextArea] Calculer le nombre de lignes


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut [JTextArea] Calculer le nombre de lignes
    Bonjour,

    Je souhaite calculer le nombre de lignes de texte d'un JTextArea.

    Ce JTextArea ne contient aucun ScrollBar. Sa largeur est fixe.

    La méthode getLineCount() me renvoie la bonne hauteur si le retour à la ligne n'est pas activé.

    Par contre, lorsque le retour à la ligne est activé, le texte occupe plus de lignes, mais la méthode précédente me renvoie la même valeur, qui ne correspond donc pas au nombre réel de lignes.

    Existe-t-il un moyen simple de récupérer le nombre de lignes de texte lorsque le retour à la ligne est activé ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    salut enocet,
    à la bourin çà ferait quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // petite méthode ................................
    int getCount(JTextArea jta, String rech){
      // rech est soit "\n" soit "\n\r"
      String tmp = jta.getText();
      int compt = 0, index; 
      while((index = tmp.indexOf(rech)) != -1){
        compt++;
        tmp = tmp.substring(index + rech.length());
      }
      tmp = null;
      return compt;
    }
     
    // ailleurs en appel de la méthode : choisir l'option, 1 normalement
    System.out.println("test n : " + getCount(jtaNombres, "\n"));
    System.out.println("test nr : " + getCount(jtaNombres, "\n\r"));
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ca renvoie la même chose que le getLineCount() (en ajoutant un pour prendre en compte la première ligne)

    En fait, lorsqu'une ligne de texte est coupée par le JTextArea, il ne rajoute pas pour autant de "\n" dans le texte. Le texte n'est pas modifié, c'est juste l'affichage qui change.

    Ce que je veux, c'est savoir sur combien de lignes le texte est affiché.

    Merci quand même. Si tu as d'autres idées, je suis preneur

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 92
    Points
    92
    Par défaut
    re,
    ce que tu appelles le retour à la ligne, c'est lineWrap je suppose ?
    je suis un peu étonné car j'ai calculé le compte des lignes de mon jta avec LineWrap(true) puis false et j'obtiens le même nombre, exact ....
    autre idée alors pour le fun :
    int istr = jta.getText().length(); // taille de la chaine en caractères
    int w = jta.getWidth() // largeur en je sais plus
    int rapport = istr / w ;// donne un rapport dont tu peux déduir le nombre de lignes ...

    mais vraiment pour le fun ....alors .
    non je me demande si tu ne te heurtes pas à un faux problème ...
    A++ bon courage.

  5. #5
    Membre à l'essai
    Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ta dernière solution ne devrait pas marcher car ton jta.getText().length() va me donner un nombre de caractères. Or, tous les caractères ne font pas la même taille (sauf pour quelques polices comme Courier). Donc on n'aura pas le nombre exact de retours à la ligne.

    Je ne sais pas s'il existe une solution simple toute faite.
    Je te remercie quand même d'avoir passé du temps à chercher une solution.

Discussions similaires

  1. Calcul du nombre de lignes Excel remplies via Delphi6
    Par gilardino dans le forum Débuter
    Réponses: 2
    Dernier message: 28/09/2008, 16h13
  2. Calcul du nombre de ligne d'une feuille Excel en VBA
    Par top_eagle dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2007, 17h09
  3. Réponses: 2
    Dernier message: 06/08/2006, 00h08
  4. Calculer le nombre de ligne de code source
    Par yanis97 dans le forum Qualimétrie
    Réponses: 4
    Dernier message: 04/07/2005, 22h02
  5. [Debutant(e)]Calcul du nombre de ligne sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/12/2004, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo