Вопрос

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

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

Привет, Мир!
бла - бла - бла

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

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

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

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

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

Это было полезно?

Решение

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

Что он делает, так это:

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

P.S.:Мне очень жаль будить такой старый пост, но как бы то ни было, у вас есть надежный фрагмент для вашей 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 JIDE также недавно был усовершенствован для поддержки нескольких строк.Я бы рекомендовал его вместо MultilineLabel, поскольку он обладает многими другими замечательными функциями.Вы можете ознакомиться со статьей о StyledLabel ниже.Это по-прежнему бесплатно и с открытым исходным кодом.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top