перенести строки HTML текста JLabel

 
0
 
Java
ava
_Y_ | 25.10.2008, 17:58
Имеется JLabel в котором отображается довольно длинный HTML-отформатированный текст. В отличие от представления в браузерах:
  • если строка в ширину JLabel не помещается - она распирает JLabel, браузеры же сами переносят строку по пробелу или по черточке;
  • если в строке имеется текстовый код новой строки, строка переносится, браузеры же такой код игнорируют, перенося либо где им нужно, либо по тегу <br>.
Вопрос в том, можно ли заставить JLabel вести себя по-браузерски, т.е. переносить строку под свой размер и/или игнорировать код новой строки? Понятное дело, что можно написать свой код, но может есть стандартное средство?

ЗЫ: К JLabel я не привязан - сгодится и другой компонент, но только из стандартных пакетов.
Ответы (4)
ava
Старовъръ | 26.10.2008, 11:22 #
javax.swing.JTextPane ?
ava
_Y_ | 26.10.2008, 11:53 #
Цитата (Старовъръ @ 26.10.2008, 11:22)
javax.swing.JTextPane ?

Что-то я торможу. JTextPane вообще не желает HTML обрабатывать. Вот этот код создает JTextPane.

//Create HTML text
StringBuffer stringBuffer = new StringBuffer("<html><body>");
for(int i = 0; i < 100; i++) stringBuffer.append(i + " ");
stringBuffer.append("</body></html>");

//Create JTextPane and set the HTML text
JTextPane jTextPane = new JTextPane();
jTextPane.setText(stringBuffer.toString());

Показывает:

<html><body>0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 </body></html>

Что я забыл поутру спросонья?
ava
dorogoyIV | 26.10.2008, 12:34 #

HTMLEditorKit kit = new HTMLEditorKit();
jTextPane.setEditorKit(kit);
jTextPane.setText("<html>321<br>123&nbsp;<sub>777");
ava
_Y_ | 26.10.2008, 13:01 #
Спасибо. Работает. Чтобы закрыть тему привожу работающий код:

//Create HTML text
StringBuffer stringBuffer = new StringBuffer("<html><body>");
for(int i = 0; i < 100; i++) stringBuffer.append(i + " ");
stringBuffer.append("</body></html>");

//Create JTextPane and set the HTML text
JTextPane jTextPane = new JTextPane();
jTextPane.setEditorKit(new HTMLEditorKit());
jTextPane.setEditable(false);
jTextPane.setText(stringBuffer.toString());
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить