我在 JScrollPane 上有一个 JTree,作为我的 GUI 的一部分。我已经设置了一个 AncestorListener,在其中响应 AncestorAdded 事件。在这种情况下,我想自动扩展尽可能多的可见节点。 可见,我的意思是我想要扩展尽可能多的节点,以使树的总高度不超过 JScrollPane 视口(viewport)的最大高度。如果我的视口(viewport)有 500 像素的可见空间,我希望树展开直到总展开高度小于或等于 500 像素。
我尝试通过几种不同的方式来实现这一目标。归结为:以编程方式扩展节点后,我似乎无法检索树的更新高度。如何重新计算树的高度?例如,tree.getHeight() 即使在展开节点后也始终返回相同的值。在计算之间调用 tree.invalidate() 也没有帮助。
最佳答案
How can I recalculate the height of the tree?
也许 getVisibleRowCount()
*
getRowHeight()
将为您提供正确的尺寸。
getRowHeight()
的文档指出它可能会返回 <= 0
并将行高留给渲染器,当您使用 JTreeTable
时可能会遇到这种情况。
关于java - 自动扩展 JTree 直到满足高度阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093674/