Автоматически расширять JTree до достижения порога высоты - PullRequest
1 голос
/ 17 августа 2011

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

Я пытался добиться этого несколькими разными способами. Это сводится к следующему: я не могу получить обновленную высоту для дерева после программного расширения узла. Как я могу пересчитать высоту дерева? Например, tree.getHeight () всегда возвращает одно и то же значение даже после расширения узла. Вызов tree.invalidate () между вычислениями тоже не помог.

1 Ответ

1 голос
/ 18 августа 2011

Как я могу пересчитать высоту дерева?

Возможно getVisibleRowCount()*getRowHeight() даст вам правильный размер.

Документация для getRowHeight()утверждает, что он может вернуть <= 0 и оставить высоту строки до средства визуализации, что может иметь место для вас, когда вы используете JTreeTable.

...