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 ...

Foi útil?

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("<","&lt;").replaceAll(">", "&gt;").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 &lt; e &gt; respectivamente, impedindo que alguns vertem estragos.

O que ele faz é:

  • "<html>" + adiciona uma tag de abertura html no início
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;") escapes < e > por conveniência
  • .replaceAll("\n", "<br/>") substitui todas as novas linhas por br (de quebra de linha HTML) tags para que você queria
  • ... e + "</html>" fecha nossa tag html 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.

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

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.

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top