Nova linha em JLabel
-
11-09-2019 - |
Pergunta
Como posso exibir uma nova linha em JLabel
?
Por exemplo, se eu queria:
Olá mundo!
blahblahblah
Isto é o que eu tenho agora:
JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);
Isto é o que é exibido:
Olá mundo! Blahblahblah
Perdoe-me se esta é uma pergunta idiota, eu estou começando a aprender algumas noções básicas de Swing ...
Solução
Surround a corda com <html></html>
e quebrar as linhas com <br/>
.
JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
Outras dicas
Você pode tentar fazer isso:
myLabel.setText("<html>" + myString.replaceAll("<","<").replaceAll(">", ">").replaceAll("\n", "<br/>") + "</html>")
As vantagens de fazer isso são:
- Ele substitui todas as novas linhas com
<br/>
, sem falhar. - Ele substitui automaticamente eventual
<
e>
com<
e>
respectivamente, impedindo que alguns vertem estragos.
O que ele faz é:
-
"<html>" +
adiciona uma tag de aberturahtml
no início -
.replaceAll("<", "<").replaceAll(">", ">")
escapes<
e>
por conveniência -
.replaceAll("\n", "<br/>")
substitui todas as novas linhas porbr
(de quebra de linha HTML) tags para que você queria - ... e
+ "</html>"
fecha nossa taghtml
no final.
P.S .: Sinto muito para acordar um posto tão velho, mas o que quer, você tem um trecho de confiança para seu Java!
Você pode usar o componente MultilineLabel na Componentes Jide Open Source.
Você pode fazer
JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);
e vai envolvê-lo automaticamente quando necessário.
Aakash Obrigado por recomendar JIDE MultilineLabel. StyledLabel de JIDE também é reforçada recentemente para apoiar a linha múltipla. Eu recomendaria sobre o MultilineLabel, pois tem muitas outras grandes características. Você pode conferir um artigo sobre StyledLabel abaixo. Ainda é livre e de código aberto.
JLabel é realmente capaz de exibir alguns HTML rudimentar, que é por isso que não está respondendo ao seu uso do caractere de nova linha (ao contrário de, digamos, System.out).
Se você colocar no HTML e <BR>
usado correspondente, você obteria suas novas linhas.