Вам необходимо сохранить развернутые TreePath и снова развернуть их после перезагрузки TreeModel.Все TreePath, имеющие потомка, считаются развернутыми.PS если вы удалили пути, проверьте после перезагрузки, если путь все еще доступен.
public void reloadTree(JTree jYourTree) {
List<TreePath> expanded = new ArrayList<>();
for (int i = 0; i < jYourTree.getRowCount() - 1; i++) {
TreePath currPath = getPathForRow(i);
TreePath nextPath = getPathForRow(i + 1);
if (currPath.isDescendant(nextPath)) {
expanded.add(currPath);
}
}
((DefaultTreeModel)jYourTree.getModel()).reload();
for (TreePath path : expanded) {
jYourTree.expandPath(path);
}
}