Новая строка в надписи


Как я могу отобразить строку в JLabel?

например, если бы я хотел:

Привет, Мир!
не писал, блаблабла

это то, что у меня есть прямо сейчас:

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

это то, что отображается:

Привет, Мир!не писал, блаблабла

Простите меня, если это глупый вопрос, я просто изучаю некоторые основы свинга...

6 87

6 ответов:

окружите строку с <html></html> и разорвать линии с <br/>.

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

вы можете попробовать и сделать это:

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

преимущества этого:

  • он заменяет все новые строки на <br/>, без сбоев.
  • он автоматически заменяет eventual < и > С &lt; и &gt; соответственно, предотвращая некоторые сделать хаос.

что он делает:

  • "<html>" + добавляет открытие html тег в начале
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;") убегает < и > для удобства
  • .replaceAll("\n", "<br/>") заменяет все переводы строк на br (HTML разрыв строки) теги для того, что вы хотели
  • ... и + "</html>" закрывает наш html тег в конце.

П. С.: Мне очень жаль, чтобы разбудить такой старый пост, но все, что у вас есть надежный сниппет для вашего Java!

вы можете использовать компонент MultilineLabel в компонентах с открытым исходным кодом Jide.

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

можно сделать

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

и он автоматически обернет его там, где это необходимо.

спасибо Aakash за рекомендацию Jide MultilineLabel. StyledLabel Джида также увеличен недавно для того чтобы поддержать множественную линию. Я бы рекомендовал его над MultilineLabel, поскольку он имеет много других замечательных функций. Вы можете проверить статью на StyledLabel ниже. Он по-прежнему свободен и с открытым исходным кодом.

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

JLabel на самом деле способен отображать некоторые рудиментарные HTML, поэтому он не отвечает на ваше использование символа новой строки (в отличие, скажем, от System.из.)

Если вы вставили соответствующий HTML и использовали <BR>, вы получите свои новые строки.