[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 !
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 !
A voir également:
- [Java] JLabel wrap
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
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...
++
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 :
Source: https://www.geekyramblings.net
Ca marche nickel, merci à lui !
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 !
Et j'ai essayé avec le setSize(), mais rien à faire...