Окраска узлов дерева JTree - PullRequest
3 голосов
/ 24 мая 2010

У меня есть JTree, который я даю объектам, которые реализуют интерфейс TreeNode, и пользовательский TreeModel для их отображения (без использования DefaultMutableTreeNode). Я хотел бы изменить цвет текста некоторых узлов. Я не могу найти ничего в документах, кроме javax.swing.tree.DefaultTreeCellRenderer.setTextNonSelectionColor(Color newColor), но это изменит все без разбора, и мне это нужно только для некоторых узлов (в частности, неработающих ссылок, то есть узлов, соответствующие файлы которых не могут быть найдены на диске должно быть серым, остальное должно быть по умолчанию). Можно ли это сделать и как?

Ответы [ 2 ]

3 голосов
/ 24 мая 2010

Вы близки к своему ответу. То, что вам нужно сделать, это подкласс DefaultTreeCellRenderer и переопределить несколько методов DefaultTreeCellRenderer. Затем убедитесь, что вы указали дереву использовать ваш пользовательский модуль визуализации ячеек.

То, что вам нужно будет сделать, - это иметь некоторые переменные состояния, которые указывают, не нарушена ли ссылка, и установить цвет узла на основе этого.

0 голосов
/ 24 мая 2010

Вы также можете посмотреть на org.netbeans.swing.outline, упомянутое в этом ответе . Обычные расширения TableCellRenderer и интерфейса RenderDataProvider позволяют особенно легко настроить внешний вид строк в дереве.

...