Zone de texte dont la hauteur se règle automatiquement (suite...)

thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 29 janv. 2006 à 13:06
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 - 29 janv. 2006 à 19:30
Bonjour à tous !


J'ai un petit problème : je voudrais faire apparaître du texte à l'écran (sur une JFrame), en utilisant un JLabel par exemple (jusque là tout va bien). Mais je souhaiterais que, lorsque je crée mon JLabel, sa hauteur s'adapte automatiquement au contenu du texte. Mon but est de pouvoir créer un JLabel qui ait une largeur fixe, mais qui ait pile la hauteur de mon texte, sans que je connaisse le contenu de mon texte à l'avance ...

Important : le contenu du texte de mon JLabel est en html, de façon à pouvoir écrire sur plusieurs lignes automatiquement. Cependant, je ne compte pas utiliser plusieurs polices ou tailles de caractères dans mon texte. Une méthode pour obtenir le nombre de lignes de mon texte pourrait donc me convenir !

Merci par avance pour votre aide !!!

5 réponses

scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
29 janv. 2006 à 13:53
Salut
Tu pourrais faire une méthode qui compte le nombre de balises html faisant un retour à la ligne en utilisant, par exemple, un StringTokenizer

Voila
A++
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
29 janv. 2006 à 14:03
Merci, mais malheureusement, cela ne répond pas à mon problème ...

Je vais essayer d'être plus clair :
- je crée un JLabel comme ici : JLabel monLabel = new JLabel("<html>plein de texte ici</html>");
- je souhaiterais par la suite que monLabel ait une largeur de 100 par exemple, et une hauteur qui soit celle du texte.

Car en créant un JLabel de la sorte, le texte revient automatiquement à la ligne si la longueur du texte est supérieure à la largeur de monLabel (ici 100). Et il y a donc plusieurs lignes de texte dans mon JLabel, alors que je n'ai utilisé aucune balise (autre que <html> et </html> bien sûr).
Je souhaite donc connaître la hauteur totale de mon texte, ou au moins le nombre de lignes sur lequel s'étend mon texte.

Merci !
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
29 janv. 2006 à 15:54
Ben tu peux compter le nombre de caractères de ton texte et ensuite le diviser par la largeur du JLabel
Tu obtiendras la hauteur que tu dois donner à ton JLabel
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
29 janv. 2006 à 17:15
c'est une bonne idée, mais si mes caractères n'ont pas la même longueur, ça risque de ne pas fonctionner correctement. Je pourrais aussi utiliser FontMetrics pour connaître la longueur de mon texte et en déduire le nombre de lignes utilisées, mais cette solution est inefficace également si j'ajoute de temps à autres (car ça peut arriver) des balises de retour de ligne ....

quelqu'un a-t-il une idée ?

Merci en tout cas pour ton aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
29 janv. 2006 à 19:30
Ben pour éliminer les possibles balises, tu peux d'abord appliquer un StringTokenizer et où tu stockes les tokens dans un StringBuffer.
Tu peux ensuite appliquer ton idée de FontMetrics
0
Rejoignez-nous