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

AWT/Swing Java Discussion :

nombre de lige d'un JTextPane


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    xcccc
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : xcccc

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Par défaut nombre de lige d'un JTextPane
    Bonjour, je dois mettre en place une IHM pour un compilateur, voila une image de celle-ci.

    La partie tout à gauche est composé de 2 JTextPane, celui en blanc contient le code source à compiler, celui en gris contiendra le numero des lignes. Le problème c'est que je n'arrive pas à compter le nombre de ligne dans le JTextPane du code source (je précise que le code source est écrit à partir d'un arbre). J'ai une fonction, que j'ai trouvé sur ce forum, qui me renvoit le numéro de la ligne quand je clique dans le JTextPane, mais lorsque que j'essaye de récupérer le numéro de la ligne après l'ecriture dans le JTextPane (pour avoir le numéro de la dernière ligne) j'ai une erreur à cause de la fonction getMagicCaretPosition() qui me renvoit null.
    Voilà la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public int getNumeroLigne()
        {
       	double yCaret=this.getCaret().getMagicCaretPosition().getY();
            double yStart=3.0;
       	int fontHeight=this.getFontMetrics(this.getFont()).getHeight();
     
       	return (int)((yCaret-yStart)/fontHeight) + 1;
       }
    J'ai voulu alors compter le nombre de retour à la ligne, mais ces retours se font par System.getProperty("line.separator"). La fonction me renvoit toujours 0.
    Voilà la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public int getNombreLigne() throws BadLocationException{
           int nombreCaractere = this.getDocument().getLength();
           int nombreLigne = 0;
     
           for (int i = 0; i < nombreCaractere - 1; i++){
     
                if (this.getText(i, 1) == System.getProperty("line.separator")){
                    nombreLigne++;
                }
           }
     
           return nombreLigne + 1;
       }
    Si quelqu'un a une idée ca serait vraiment sympa de m'aider.
    Merci

  2. #2
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Bonjour,
    Plusieurs petites erreurs :
    getText(i, 1) == System.getProperty("line.separator")
    1 - On ne compare pas l'égalité de deux objets avec ==. Il faut utiliser la méthode equals pour cela.
    2 - Tu ne devrais pas compter sur le texte brut du document si tu utilises JTextPane. En effet, par exemple pour du HTML (si éventuellement tu veux rajouter quelques couleurs par exemple), rechercher "\n" n'aurait pas grand sens.

    Voici une possibilité :
    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
    public int getNombreLigne() {
    		Element root = getDocument().getDefaultRootElement();
    		return getNombreLignes(root);
    	}
     
    	private int getNombreLignes(Element element) {
    		int nbLignes = 0;
    		if(element.getName().equals(AbstractDocument.ParagraphElementName)) {
    			nbLignes ++;
    		}
    		for(int i=0; i<element.getElementCount(); i++) {
    			Element child = element.getElement(i);
    			nbLignes += getNombreLignes(child);
    		}
    		return nbLignes;
    	}
    Bonne chance
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  3. #3
    Membre averti
    Profil pro
    xcccc
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : xcccc

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Par défaut
    Je viens de tester vedaer, et j'ai qu'une chose a dire, MERCI , ca a l'air de marcher sans problème, il me reste plus qu'a parcourir un peu la doc pour comprendre exactement ce que font les fonctions. Encore merci pour ta réponse et ta rapidité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nombre de lignes dans un JTextPane
    Par riadhhwajdii dans le forum Composants
    Réponses: 2
    Dernier message: 03/11/2010, 09h54
  2. Récupérer le nombre de lignes dans un JTextPane
    Par nicolav dans le forum Composants
    Réponses: 0
    Dernier message: 03/10/2008, 23h35
  3. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31
  4. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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