Newline dans JLabel
-
11-09-2019 - |
Question
Comment puis-je afficher une nouvelle ligne dans JLabel
?
Par exemple, si je voulais:
Bonjour tout le monde!
blahblahblah
est ce que j'ai en ce moment:
JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);
Voici ce qui est affiché:
blahblahblah Bonjour tout le monde!
Pardonnez-moi si cela est une question stupide, je suis en train d'apprendre quelques notions de base Swing ...
La solution
Entourez la chaîne avec <html></html>
et briser les lignes avec <br/>
.
JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
Autres conseils
Vous pouvez essayer de faire ceci:
myLabel.setText("<html>" + myString.replaceAll("<","<").replaceAll(">", ">").replaceAll("\n", "<br/>") + "</html>")
Les avantages de le faire sont les suivants:
- Il remplace tous les sauts de ligne avec
<br/>
, sans faute. - Il remplace automatiquement
<
éventuelle et>
avec<
et>
respectivement, ce qui empêche certains rendent des ravages.
Ce qu'il fait est:
-
"<html>" +
ajoute une balisehtml
d'ouverture au début -
.replaceAll("<", "<").replaceAll(">", ">")
échappe<
et>
pour plus de commodité -
.replaceAll("\n", "<br/>")
remplace toutes les nouvelles lignes debr
(saut de ligne HTML) tags pour ce que vous vouliez - ... et
+ "</html>"
ferme notre taghtml
à la fin.
P.S .: Je suis désolé de se réveiller un vieux poste, mais peu importe, vous avez un extrait fiable pour votre Java!
Vous pouvez utiliser le composant MultiLineLabel dans les composants Open Source Jide.
Vous pouvez faire
JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);
et il se terminera automatiquement le cas échéant.
Merci Aakash pour recommander JIDE MultiLineLabel. StyledLabel de JIDE est également améliorée récemment pour soutenir plusieurs lignes. Je le recommande sur le MultiLineLabel car il a beaucoup d'autres fonctionnalités. Vous pouvez consulter un article sur StyledLabel ci-dessous. Il est encore libre et open source.
JLabel est en fait capable d'afficher du code HTML rudimentaire, ce qui est la raison pour laquelle il ne répond pas à l'utilisation du caractère de nouvelle ligne (contrairement à, disons, System.out).
Si vous mettez dans le <BR>
HTML et utilisé correspondant, vous obtiendrez votre retour à la ligne.