[Java] JLabel wrap
Résolu
zzzer
Messages postés
938
Statut
Membre
-
sandul Messages postés 4013 Statut Membre -
sandul Messages postés 4013 Statut Membre -
Bonjour,
J'aimerais réaliser un JScrollPane avec un JLabel dont le texte retourne à la ligne en fin de ligne, mais j'ai quelques problèmes.
J'ai essayé un
Quelqu'un aurait une solution ?
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
J'aimerais réaliser un JScrollPane avec un JLabel dont le texte retourne à la ligne en fin de ligne, mais j'ai quelques problèmes.
J'ai essayé un
JLabel jl = new JLabel("<html>Mon texte qui devrait retourner à la ligne à la fin de chaque mot mais qui, finalement, ne fonctionne pas</html>");
JScrollPane jsp = new JScrollPane(jl, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER););
myFrame.add(jsp);Mais rien à faire, le texte de mon JLabel ne revient pas à la ligne...
Quelqu'un aurait une solution ?
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS
Configuration: HP DV5 1123ef 3Go de RAM Core 2 Duo 2GHz NVidia 9600M GT
3 réponses
-
Salut, toi :-)
Est-ce que tu peux te permettre d'insérer des <br> ponctuels? C'est ce que je fais, je n'ai pas réussi moi non plus à avoir un retour auto à la ligne...
(I) Je n'ai pas testé à limiter les dimensions des JLabel (via max / preferred size), têtre comme ça...
++ -
Quel est l'effet d'un max size défini ? La JLabel ne respecte pas la dimension ou bien tronque le texte?
-
Ca ne respecte pas la dimension, le JLabel s'étend jusqu'à la fin de la phrase, même si ça dépasse la fenêtre.
Mais je viens de trouver une fonction en or :private void wrapLabelText(JLabel label, String text) { FontMetrics fm = label.getFontMetrics(label.getFont()); Container container = label.getParent(); int containerWidth = container.getWidth(); BreakIterator boundary = BreakIterator.getWordInstance(); boundary.setText(text); StringBuffer trial = new StringBuffer(); StringBuffer real = new StringBuffer("<html>"); int start = boundary.first(); for (int end = boundary.next(); end != BreakIterator.DONE; start = end, end = boundary.next()) { String word = text.substring(start,end); trial.append(word); int trialWidth = SwingUtilities.computeStringWidth(fm, trial.toString()); if (trialWidth > containerWidth) { trial = new StringBuffer(word); real.append("<br>"); } real.append(word); } real.append("</html>"); label.setText(real.toString()); }
Source: https://www.geekyramblings.net
Ca marche nickel, merci à lui !
-
-