Новая линия в JLabel

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

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

Привет мир!
blahblahblah

Вот что я имею прямо сейчас:

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

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

Привет, мир! blahblahblah

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

Ответ 1

Окружать строку с помощью <html></html> и сломать строки с помощью <br/>.

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

Ответ 3

Вы можете сделать

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

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

Ответ 4

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

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

Ответ 5

Вы можете попробовать:

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

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

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

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

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

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

Ответ 6

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

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