Новая строка в JLabel
-
11-09-2019 - |
Вопрос
Как я могу отобразить новую строку в 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("<","<").replaceAll(">", ">").replaceAll("\n", "<br/>") + "</html>")
Преимущества этого заключаются в следующем:
- Он заменяет все новые строки на
<br/>
, в обязательном порядке. - Он автоматически заменяет конечный
<
и>
с<
и>
соответственно, предотвращая некоторый хаос.
Что он делает, так это:
"<html>" +
добавляет отверстиеhtml
пометьте в начале.replaceAll("<", "<").replaceAll(">", ">")
убегает<
и>
для удобства.replaceAll("\n", "<br/>")
заменяет все новые строки наbr
теги (разрыв строки HTML) для того, что вы хотели- ...и
+ "</html>"
закрывает нашhtml
пометьте в конце.
P.S.:Мне очень жаль будить такой старый пост, но как бы то ни было, у вас есть надежный фрагмент для вашей Java!
Вы можете использовать компонент MultilineLabel в компонентах с открытым исходным кодом Jide.
Вы можете сделать
JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);
и он автоматически обернет его там, где это уместно.
Спасибо Aakash за рекомендацию JIDE MultilineLabel.StyledLabel JIDE также недавно был усовершенствован для поддержки нескольких строк.Я бы рекомендовал его вместо MultilineLabel, поскольку он обладает многими другими замечательными функциями.Вы можете ознакомиться со статьей о StyledLabel ниже.Это по-прежнему бесплатно и с открытым исходным кодом.
JLabel на самом деле способен отображать некоторый элементарный HTML-код, вот почему он не реагирует на использование вами символа новой строки (в отличие, скажем, от System.out).
Если вы ввели соответствующий HTML-код и использовали <BR>
, вы бы получили свои новые строки.