У меня есть JTree на JScrollPane как часть моего GUI. Я настроил AncestorListener, где я отвечаю на событие ancestorAdded. В этом случае я бы хотел автоматически расширить как можно больше видимых узлов. Под visible я подразумеваю, что я хочу расширить как можно больше узлов, чтобы общая высота дерева не превышала максимальную высоту области просмотра JScrollPane. Если в моем окне просмотра было 500px видимого пространства, я хочу, чтобы дерево расширялось до тех пор, пока общая увеличенная высота не станет меньше или равна 500px.
Я пытался добиться этого несколькими разными способами. Это сводится к следующему: я не могу получить обновленную высоту для дерева после программного расширения узла. Как я могу пересчитать высоту дерева? Например, tree.getHeight () всегда возвращает одно и то же значение даже после расширения узла. Вызов tree.invalidate () между вычислениями тоже не помог.