Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Multiline JTree


Автор: regen 8.10.2007, 13:52
Доброе время суток.
Вопрос может и не нов, но всё-таки...
Есть объект типа JTree. Есть Renderer который наследует DefaultTreeCellRenderer и рисует к узлам иконки... Тут появилось необходимость чтобы  узлы объекта были multiline. Пошёл от JTextArea. Сделал. Однако выяснилось, что таким образом нельзя добавить иконки около узла (т.к. у JTextArea нету метода setIcon). А задача стоит:
1) чтобы были у каждого узла иконки
2) если текст в узле длинный - разбить по словам (т.е multiline)
Как эти два требования реализовать вместе?

Заранее большое спасибо

Автор: fixxer 8.10.2007, 14:30
Наиболее оптимальным я считаю использование в тексте html тагов. Например "<html>one<br>two". И не нужны никакие рендереры.

Автор: dorogoyIV 8.10.2007, 14:31
так может быть тебе идти не от JTextArea, а от JPanel ? а на панель ложить иконку и текстареа.
это как вариант  smile 

Автор: powerOn 8.10.2007, 14:32
Цитата(regen @  8.10.2007,  14:52 Найти цитируемый пост)
Пошёл от JTextArea.

Можно попробовать идти от JPanel на котором будет слева JLabel для иконки и справа JTextArea для многострочного текста.

Добавлено через 25 секунд
Опаздал!  smile 

Автор: fixxer 8.10.2007, 14:36
Цитата(powerOn @ 8.10.2007,  14:32)
Цитата(regen @  8.10.2007,  14:52 Найти цитируемый пост)
Пошёл от JTextArea.

Можно попробовать идти от JPanel на котором будет слева JLabel для иконки и справа JTextArea для многострочного текста.

Зачем? html это наше все.

Код

TreeNode node = new DefaultMutableTreeNode("<html>one<br>two");


Куда уж проще?

Автор: dorogoyIV 8.10.2007, 15:21
fixxer, а как картинку подгрузить?
пишу так:
Код

JLabel jl=new JLabel("<html><img src=image.gif>");
add(jl);

чево то не рисуется картинка  smile 

Автор: fixxer 8.10.2007, 15:42
Да просто не находит картинку. Используйте Class#getResource(). Ну и никто не запрещает переопределить дефолтный рендерер и там сказать setIcon(Icon)

Автор: regen 9.10.2007, 13:30
Пошёл как и советовалось от JPanel. В итоге теперь всё в ажуре. Большое спасибо.
Насчет html... Сам так попробовал перед тем как вопрос задать. Не устроило по причине "а если слишком большой текст, как определять высоту ячейки?"... html просто пытался вместить огромный текст в ячейку и из этого выходила полная нечитабельность. Может у меня СКР, но всё-таки..  smile 

Всем большое спасибо. Вопрос решён

Автор: skif18 16.10.2007, 18:22
И мне помогли спасибо!

Автор: dorogoyIV 20.10.2007, 05:32
Цитата(dorogoyIV @  8.10.2007,  15:21 Найти цитируемый пост)
fixxer, а как картинку подгрузить?пишу так:код Java1:2:JLabel jl=new JLabel("<html><img src=image.gif>");add(jl);highlightSyntax('java_ZGE3Zj','java');highlightSyntax('java_ZGE3Zj','java');чево то не рисуется картинка   


наверное fixxer этого не знал  smile 
хоть и с опозданием напишу, но все же...
надо так подгружать картинку через HTML:
Код

new JLabel("<html><img src=file:image.gif>")

 smile 

Автор: fixxer 23.10.2007, 10:19
Цитата(dorogoyIV @ 20.10.2007,  05:32)

наверное fixxer этого не знал  smile 
хоть и с опозданием напишу, но все же...
надо так подгружать картинку через HTML:
Код

new JLabel("<html><img src=file:image.gif>")

 smile

http://forum.vingrad.ru/forum/topic-154526/anchor-entry1156204/15.html#

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)