作为GUI的一部分,我在JScrollPane上有一个JTree。我已经设置了一个AncestorListener,我在其中响应了ancestorAdded事件。在这种情况下,我希望自动扩展尽可能多的可见节点。通过 visible ,我的意思是我想扩展尽可能多的节点,使树的总高度不超过JScrollPane视口的最大高度。如果我的视口有500px的可见空间,我希望树展开,直到总展开高度小于或等于500px。
我试图通过几种不同的方式实现这一目标。归结为:在以编程方式扩展节点后,我似乎无法检索树的更新高度。我怎样才能重新计算树的高度?例如,tree.getHeight()在扩展节点后总是返回相同的值。在计算之间调用tree.invalidate()也无济于事。
答案 0 :(得分:1)
如何重新计算树的高度?
也许getVisibleRowCount()
*
getRowHeight()
会为您提供正确的尺寸。
getRowHeight()
的文档指出它可能会返回<= 0
并将行高保留在渲染器上,当您使用JTreeTable
时可能就是这种情况。