【问题标题】:Automatically expand JTree to until height threshold is met自动将 JTree 展开到,直到达到高度阈值
【发布时间】:2011-08-17 13:29:39
【问题描述】:

作为我的 GUI 的一部分,我在 JScrollPane 上有一个 JTree。我已经设置了一个 AncestorListener,我在其中响应了 ancestorAdded 事件。在这种情况下,我想自动扩展尽可能多的 可见 节点。 可见,我的意思是我想扩展尽可能多的节点,以使树的总高度不超过 JScrollPane 视口的最大高度。如果我的视口有 500px 的可见空间,我希望树展开直到总展开高度小于或等于 500px。

我尝试了几种不同的方式来实现这一点。归结为:在以编程方式扩展节点后,我似乎无法检索树的更新高度。如何重新计算树的高度?例如,tree.getHeight() 始终返回相同的值,即使在我展开节点后也是如此。在计算之间调用 tree.invalidate() 也没有帮助。

【问题讨论】:

  • 困惑 - 表格在哪里/如何发挥作用?
  • 您在描述中将两个不同的JComponents JTree(关于Nodes)与JTable(关于table.getHeight()invalidate())混合在一起,出现问题,请发布可运行代码这表明...
  • 哎呀。我实际上正在使用 TreeTable,但出于问题的目的,一切都适用于 JTree。我修复了我发布的问题中的所有内容。

标签: java swing jtree


【解决方案1】:

如何重新计算树的高度?

也许getVisibleRowCount()*getRowHeight() 会给你正确的尺寸。

getRowHeight() 的文档指出它可能会返回 <= 0 并将行高留给渲染器,当您使用 JTreeTable 时可能会出现这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多