110 votes

Infobulles multi-lignes en Java ?

J'essaie d'afficher des infobulles en Java, qui peuvent ou non contenir des paragraphes. Comment puis-je mettre en mots les longues infobulles ?

0 votes

Veuillez fournir un exemple de code.

1 votes

Les infobulles ne se transforment-elles pas automatiquement en mots s'ils sont entourés de balises HTML ? Je ne suis pas sûr, donc je ne mets pas cette question en tant que réponse.

0 votes

Paul : Seulement si vous avez des sauts de ligne explicites.

156voto

Paul Tomblin Points 83687

Si vous enveloppez l'info-bulle dans <html> y </html> vous pouvez couper les lignes avec <br> tags. Voir http://www.jguru.com/faq/view.jsp?EID=10653 pour des exemples et une discussion.

Vous pouvez également utiliser la classe JMultiLineToolTip que l'on trouve à de nombreux endroits sur le net, notamment https://github.com/ls-cwi/yoshiko-app/blob/master/src/main/java/com/yoshiko/internal/view/JMultiLineToolTip.java

2 votes

J'ai utilisé la classe JMultiLineToolTip que vous avez suggérée. Une fois que j'ai utilisé setFixedWidth() pour limiter l'infobulle à une taille raisonnable, cela a bien fonctionné. Merci !

24voto

Texte de l'info-bulle qui commence par " <html> " sera traité comme du HTML. Bien sûr, cela pourrait être du HTML très large.

Vous pouvez passer outre [JComponent.createTooltip](http://java.sun.com/javase/6/docs/api/javax/swing/JComponent.html#createToolTip()) pour remplacer l'info-bulle par votre propre composant qui peut afficher ce que vous voulez.

23voto

phwoelfel Points 31

Je sais que ce sujet est assez ancien mais j'ai trouvé une solution assez simple en utilisant du code HTML !

Il suffit d'utiliser un paragraphe HTML avec une largeur fixe :

setToolTipText("<html><p width=\"500\">" +value+"</p></html>");

1 votes

Que faire si je veux afficher un texte beaucoup plus court que la taille de l'infobulle ? La balise "max-width" ne fonctionne pas ici

0 votes

Vous pouvez même sauter les balises de fermeture. Ce n'est peut-être pas un html valide, mais ça fonctionne bien.

6voto

ja4 Points 121

Ejemplo:

jTextField1.setToolTipText("<html>"
                              + "Line One"
                              +"<br>"
                              + "Line 2"
                         + "</html>");

0 votes

Cela ne répond pas à la question de l'auteur de la demande. Il s'interrogeait sur l'habillage lorsqu'il est affiché, et non dans le code source.

3 votes

@ArtB cet exemple de code donne bien une infobulle de deux lignes comme demandé.

0 votes

@ja4 Cet exemple de code m'a aidé à créer des infobulles de plusieurs lignes, de manière très simple.

5voto

basszero Points 14539

Utilisez des infobulles HTML et coupez manuellement vos lignes (un simple tokenizer de mots avec une longueur de ligne fixe devrait suffire). Assurez-vous simplement que le texte de votre infobulle commence par "<HTML>". Coupez les lignes avec "<BR/>" ou "<P>". Je réalise que ce n'est pas la solution la plus propre et que le support HTML de Java est horrible, mais cela devrait permettre de faire avancer les choses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X