2015-01-16 2 views
-1

Я не могу обновить динамически TreeView графический элемент при попытке установить новый образ:Update TreeView элемент графического

ImageView imgViesw = new ImageView(new Image(DataTabs.class.getResource("/images/Misc-Database-3-icon.png").toExternalForm())); 

treeItem.setGraphic(null); 
treeItem.setGraphic(imgViesw); 

Сначала я произвожу TreeView с пунктами, используя пользовательские графики для для узлов дерева. Это хорошо работает.

Затем я использую службу JavaFX для итерации узлов дерева и изменения значков на основе некоторого условия (активное/неактивное).

Но изображения не обновляются.

Я использую Java 8u40b21. Это известная ошибка?

+1

Пожалуйста, обратите внимание на отправку MCVE (http://stackoverflow.com/help/mcve). – eckig

+0

Работает отлично для меня на JDK 8u40b16 (сайт загрузки поврежден прямо сейчас, поэтому я не могу проверить b21). Я подозреваю, что ошибка указана в коде, который вы нам не показали. –

ответ

0

Я считаю, что вам нужно создать собственную фабрику ячеек для вашего древовидного представления для компоновки ваших компонентов (установить графику).

См Исполнительные Клеточные фабрики:

http://docs.oracle.com/javafx/2/ui_controls/tree-view.htm

То, что я думаю, что это происходит, что вы на самом деле изменить рисунок, однако сразу послесловие ячейки по умолчанию фабрики древовидном в воссоздает дерево ячейки и отображает дерево элемента, что вместо.

+1

'setGraphic (...)' работал отлично для меня. Невозможно узнать, почему это не сработало для ОП, поскольку он не опубликовал свой код. –

1

После установки новой графики на TreeItem, обновите TreeView. Меня устраивает.

treeItem.setGraphic(imgViesw);  
myTreeView.refresh(); 
+0

нет .. настройка графика должна (и делает) обновить дерево, не нужно выкапывать канон :-) Refresh - очень, очень последняя мера для редких угловых случаев - f.i. если ваши данные не могут быть организованы, чтобы сообщать об изменениях. Не используйте ничего! – kleopatra

Смежные вопросы