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 :
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.
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; }
Voilà la fonction :
Si quelqu'un a une idée ca serait vraiment sympa de m'aider.
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; }
Merci
Partager