java - 自动扩展 JTree 直到满足高度阈值

标签 java swing jtree

我在 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/

相关文章:

java - 在进入循环之前显示 GlassPane

java - 如何根据 JTree 选择优化显示不同的 JPanel

java - JTree 不显示

java - 比较两个表并得到不同的打印输出

java - 在多线程环境中重绘

java - 我如何等待 Java 计时器完成

java - 线程在中断或停止后不会停止

java - 视频播放器文件选择器选择并播放视频文件

java - 获取更改的行 jtextarea

java - 使用JTree获取Java中每个子类和兄弟类的名称