JavaFX ScrollPane - 检查显示哪些组件

2024-01-03

我想知道JavaFX 8中是否有一个ScrollPane属性可用于监听当前在给定时间显示的组件。 例如, ScrollPane 有一个 VBox,其中有 8 个按钮。滚动窗格中只能看到 4 个按钮。我想要一个监听器,提供滚动位置更改时显示的 8 个按钮中的 4 个。


您可以检查节点是否可见,如下所示:

private List<Node> getVisibleNodes(ScrollPane pane) {
    List<Node> visibleNodes = new ArrayList<>();
    Bounds paneBounds = pane.localToScene(pane.getBoundsInParent());
    if (pane.getContent() instanceof Parent) {
        for (Node n : ((Parent) pane.getContent()).getChildrenUnmodifiable()) {
            Bounds nodeBounds = n.localToScene(n.getBoundsInLocal());
            if (paneBounds.intersects(nodeBounds)) {
                visibleNodes.add(n);
            }
        }
    }
    return visibleNodes;
}

此方法返回所有可见节点的列表。 它所做的只是比较 ScrollPane 及其子项的场景坐标。

如果您希望它们出现在 Property 中,只需创建您自己的 ObservableList:

private ObservableList<Node> visibleNodes;

...

visibleNodes = FXCollections.observableArrayList();

ScrollPane pane = new ScrollPane();
pane.vvalueProperty().addListener((obs) -> {
    checkVisible(pane);
});
pane.hvalueProperty().addListener((obs) -> {
    checkVisible(pane);
});

private void checkVisible(ScrollPane pane) {
    visibleNodes.setAll(getVisibleNodes(pane));
}

完整代码请参见比特桶 https://bitbucket.org/kogs/stackoverflow-code-examples

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX ScrollPane - 检查显示哪些组件 的相关文章

随机推荐

  • UITableView:向上滑动时缩小选项卡栏和导航栏

    Scenario 我有一个应用程序 它使用标签栏控制器 屏幕底部 和导航控制器 屏幕顶部 UI 设计 在一个视图控制器上 我有一个 UITableView 其中包含用户将 向上滑动 以滚动表格以查看内容的内容 Need 很像雅虎 和 Ins
  • 在 C++ 代码执行过程中每 t 毫秒执行一次测量

    给定一个 while 循环和函数顺序如下 int k 0 int total 100 while k
  • 使用 Leap Motion 检测滑动手势方向

    我正在尝试使用 javascript API 通过 Leap Motion 简单地获取滑动手势的方向 我的代码是 document ready function controller new Leap Controller ws local
  • 验证Java中golang生成的rsa.SignPKCS1v15签名

    我试图让 Java 验证签名的 SHA 1 哈希值 但它一直返回 false 我在 Go 中有以下代码 它生成 RSA 密钥对并签名并返回到达 sign 端点的任何消息以及十六进制编码的哈希值以及公钥模数和指数 package main i
  • Python 和 PyQt:从另一个类运行函数

    更新3 这是新代码 试图按照你告诉我的去做 但没有结果 我开始认为我在程序中的某个地方做了一些非常愚蠢的事情 有什么新想法吗 程序 py coding utf 8 imports import os import platform impo
  • 如何在 SQL 中截断秒?

    我有时间 选择cast SYSDATETIME AS time 14 59 09 2834595 截断秒的方法是什么 14 59 描述 您可以使用T SQL函数convert Sample PRINT convert varchar 5 S
  • 如何证明两个 HTML 页面看起来相同?

    例如 我有这个 pre sun br nbsp nbsp nbsp nbsp mercury br nbsp nbsp nbsp nbsp venus br nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp e
  • IE8/9 中的 CSS3 动画

    我知道 CSS3 动画在 IE 中不起作用 我只是想知道 JavaScript 是否有解决这个问题的方法 这是我想在 IE 中重新创建的内容的链接 http animation kashoo co uk http animation kas
  • 多处理队列子类问题

    我想子类化 multiprocessing Queue 来实现进程以获取队列的块 唯一的问题是 我收到了一个奇怪的 TypeError usr bin env python whaaaaa from multiprocessing impo
  • Swift Combine - 等待所有发布者

    我正在尝试使用 Swift 组合来运行许多具有相同结果的任务 目前 每个任务都是一个将发出结果的发布者 现在我面临一个问题 我必须等待所有发布者发出该元素然后继续 有点像调度组 我找到了 zip 带有 运算符需要 4 个发布者 https
  • 如何使用 dbghelp!StackWalk64 遍历混合模式(托管+本机)堆栈?

    我正在尝试使用 StackWalk64 在 x64 进程上遍历包含托管帧和本机帧的调用堆栈 一切工作正常 直到第一个或第二个托管帧 之后 StackWalk64 无法计算出该帧的返回地址并失败 我使用 SymFunctionTableAcc
  • 每六个小时在 Linux 上运行一次 cron 作业

    如何每天每六个小时运行一次命令 我尝试了以下方法 但没有成功 6 mycommand 你忘记了一个 而且你的字段太多了 这是你需要关心的时刻 0 6 path to mycommand 这意味着从 0 开始每六小时一次 即在 0 6 12
  • :确认和:方法在 Rails Button_to 中不起作用

    我的 Rails 3 应用程序出现问题 在我看来我有 生成的html是
  • 用于写出 7 进制字的函数,如二进制计数器样式

    我需要一个类似于这里解释的功能 用于写出单词的 JS 函数 二进制计数器风格 https stackoverflow com questions 2328018 js function for writing out a word bina
  • 表示数字 x 所需的位数

    我目前正在尝试编写一个算法来确定表示数字 x 需要多少位 我的实现将在 c 中 不过 有一些问题 我几乎只能使用按位运算符 gt 另外 我不能使用任何类型的控制流 if while for 我最初的方法是从左到右检查二进制数 并查找第一个
  • 使用cheerio获取页面标题

    我正在尝试使用 Cheerio 获取网址的标题标签 但是 我得到空字符串值 这是我的代码 app get scrape function req res url http nrabinowitz github io pjscrape req
  • ContentControl.ContentTemplateSelector 动态选择模板

    我在Window的右侧设置了一个ContentControl 并设置了Content绑定Items 它的类型是ObservableCollection 现在我想实现它 如果没有项目 ContentControl选择第一个DataTempla
  • Android - ionic - 没有添加到此项目的平台

    我已成功执行以下命令 npm install g cordova npm install g ionic ionic start myApp blank cd myApp ionic platform add android 但下一个命令不
  • Java排序算法

    谁能帮我解释一下这句话吗 排序算法是一种修改 合并排序 其中合并是 如果最高元素被省略 low 子列表小于最低的 高子列表中的元素 Link Arrays sort Object 数组 http download oracle com ja
  • JavaFX ScrollPane - 检查显示哪些组件

    我想知道JavaFX 8中是否有一个ScrollPane属性可用于监听当前在给定时间显示的组件 例如 ScrollPane 有一个 VBox 其中有 8 个按钮 滚动窗格中只能看到 4 个按钮 我想要一个监听器 提供滚动位置更改时显示的 8