web-dev-qa-db-fra.com

Newline dans JLabel

Comment afficher une nouvelle ligne dans JLabel?

Par exemple, si je voulais:

Bonjour le monde!
blahblahblah

C'est ce que j'ai en ce moment:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);

C'est ce qui est affiché:

Bonjour tout le monde! Blahblahblah

Pardonnez-moi s'il s'agit d'une question idiote, j'apprends quelques notions de base sur Swing ...

94
mportiz08

Entourez la chaîne avec <html></html> et brisez les lignes avec <br/>.

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
157
freitass

Vous pouvez essayer et faire ceci:

myLabel.setText("<html>" + myString.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("\n", "<br/>") + "</html>")

Les avantages de cela sont:

  • Il remplace toutes les nouvelles lignes par <br/>, Sans faute.
  • Il remplace automatiquement les éventuels < Et > Par &lt; Et &gt;, Ce qui évite certains dégâts de rendu.

Qu'est-ce qu'il fait est:

  • "<html>" + Ajoute une balise d'ouverture html au début
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;") échappe < et > pour plus de commodité
  • .replaceAll("\n", "<br/>") remplace toutes les nouvelles lignes par les balises br (saut de ligne HTML) correspondant à vos besoins.
  • ... et + "</html>" ferme notre balise html à la fin.

P.S .: Je suis vraiment désolé de réveiller un article aussi ancien, mais peu importe, vous avez un extrait fiable pour votre Java!

8
TheSola10

Tu peux faire

JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);

et il sera automatiquement emballé, le cas échéant.

2
nevster

Vous pouvez utiliser le composant MultilineLabel dans les composants Jide Open Source.

http://www.jidesoft.com/products/oss.htm

2
Aakash

Merci Aakash d'avoir recommandé JIDE MultilineLabel. StyledLabel de JIDE a également été amélioré récemment pour prendre en charge plusieurs lignes. Je le recommande plutôt que le MultilineLabel car il possède de nombreuses autres fonctionnalités intéressantes. Vous pouvez consulter un article sur StyledLabel ci-dessous. C'est toujours gratuit et open source.

http://www.jidesoft.com/articles/StyledLabel.pdf

2
jidesoft

JLabel est en fait capable d'afficher du code HTML rudimentaire. C'est pourquoi il ne répond pas à votre utilisation du caractère de nouvelle ligne (contrairement à System.out, par exemple).

Si vous mettez le code HTML correspondant et utilisez <BR>, vous obtiendrez vos nouvelles lignes.

1
Uri