it-swarm.com.ru

Новая строка в JLabel

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

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

Привет, мир!
бла бла бла

Это то, что я имею сейчас:

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

Вот что отображается:

Привет, мир!

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

92
mportiz08

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

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

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

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) для того, что вы хотели
  • ... и + "</html>" закрывает наш тег html в конце.

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

8
TheSola10

Ты можешь сделать

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

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

2
nevster

Вы можете использовать компонент MultilineLabel в Jide Open Source Components.

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

2
Aakash

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

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

2
jidesoft

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

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

1
Uri