Я пытаюсь изменить значок узла в JTree, а затем изменить все узлы, необходимые для его получения. Вот что у меня есть.
private void LoopDirectoryTree(DefaultMutableTreeNode node, File lua_file, String icon_url) {
int childCount = node.getChildCount();
TreeIcon t_node = (TreeIcon)node.getUserObject();
if(t_node.getFile().equals(lua_file)){
t_node.setIcon(icon_url);
}
for (int i = 0; i < childCount; i++) {
DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) node.getChildAt(i);
if (childNode.getChildCount() > 0) {
LoopDirectoryTree(childNode, lua_file, icon_url);
} else {
t_node = (TreeIcon)childNode.getUserObject();
// THIS IS WHERE I TRIED TO GO BACK UP (refer below)
if(t_node.getFile().equals(lua_file)){
// Icon to change
t_node.setIcon(icon_url);
}
}
}
}
Я пробовал что-то вроде:
if(t_node.getFile().equals(lua_file)){
// Icon to change
t_node.setIcon(icon_url);
while(childNode.getParent()!=null){
childNode = (DefaultMutableTreeNode)childNode.getParent();
t_node = (TreeIcon)childNode.getUserObject();
// Icon to change (DIFFERENT ICON THAN OTHER)
t_node.setIcon(NEW_ICON_URL);
}
}
Но это не сработало, как ожидалось.
По сути, у меня есть JTree для папок и файлов. Я анализирую файл, чтобы проверить синтаксис, и если он плох, я хочу показать этот файл со значком проанализированного файла BAD и всеми его родительскими папками в JTree, я хочу быть значком проанализированной папки BAD.