【问题标题】:JavaFX 8: Adapting ListView Cell's height to its ScrollBarJavaFX 8:使 ListView Cell 的高度适应其 ScrollBar
【发布时间】:2019-07-31 14:52:20
【问题描述】:

我有一个ListView(水平方向),它使用ListCell 来显示它的项目。这些单元格是Canvas。当列表中放置了足够多的项目时,将激活垂直和水平的ScrollBar。发生这种情况时,单元格的部分内容会被水平滚动条剪裁(在底部)。

我们如何设置(或调整)列表视图的高度,以便在出现滚动条时不会发生剪切?他们是一种检测滚动条何时可见的方法吗?我们能否确定滚动条的高度并简单地使列表的高度足够高?

我通过列表视图和列表视图单元格中的更改侦听器尝试了几种方法。但这些似乎不起作用。

TIA

【问题讨论】:

  • 你问的是如何只显示水平滚动条而不是垂直滚动条?如果你能提供一个Minimal, Complete, and Verifiable example,那对我会更有帮助。
  • @SaiDandem 我在问当 ListView 单元格高度不够大时如何摆脱垂直滚动条。换句话说,我应该将高度增加多少。就代码而言,我使用的是 Scala,所以我认为这不会太有用。无论如何,我正在添加代码的 sn-p,以防我提出的解决方案对其他人有用。可能不是解决此问题的最佳方法。

标签: listview javafx-8 scrollbar listcellrenderer clipped


【解决方案1】:

我想出了以下解决方案:添加事件侦听器 - 每次添加、删除或替换元素时调整 ListView 的高度。调整大小时检查是否只有垂直和/或水平滚动条。如果仅存在垂直滚动条,则使用其高度和插图来获取单元格高度。如果还存在水平滚动条,则也添加其高度(拇指高度)。以下是相关代码 sn-p(在 Scala 中):

  def extendHeight(thumbnails: ListView[String], vertical: Option[ScrollBar], horizontal: Option[ScrollBar]): Unit = {
    (vertical, horizontal) match {
      case (None, None) => ()
      case (None, Some(_)) => ()
      case (Some(v), None) =>
        resizeHeight(thumbnails, v, 0)
      case (Some(v), Some(h)) =>
        val extra = if (h.isVisible) h.getHeight else 0
        resizeHeight(thumbnails, v, extra)
    }
  }

  def resizeToFrame(thumbnails: ListView[String]): Unit = {
    val (vertical, horizontal) = PStoryBoardUX.getScrollBars(thumbnails)
    PStoryBoardUX.extendHeight(thumbnails, vertical, horizontal)
  }

thumbnails.getItems.addListener( new ListChangeListener[String] {
      override def onChanged(c: Change[_ <: String]): Unit = {
        javafx.application.Platform.runLater( () => {

          // At thus point in time the scrollbars have not been updated
          // So we don't know if they will be active or not. Force this
          thumbnails.layout()
          // Now resize to remove the visible scrollbars
          resizeToFrame(thumbnails)
        })
      }
    })

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-08-09
    • 2015-09-11
    相关资源
    最近更新 更多