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 - 检查显示哪些组件 的相关文章

  • 如何在关闭阶段后清除 Javafx Webview 内存使用情况

    我尝试在JavaFX中使用webview制作UI 但是有一个问题 当使用popup打开大图像时 内存使用量非常大 并且当popup关闭时 内存使用量不会下降 我明白了通过 Windows 中的任务管理器查看内存使用情况 当使用webview
  • 让 GMSCircle 响应点击?

    我正在使用适用于 iOS 的 Google 地图 API 我希望当您点击 GMSCircle 时 它 会弹出我在其他地方编写的一些小东西 我已将圆圈设置为 可点击 但我找不到需要设置或制作的内容来监听点击 我用什么 CLLocationCo
  • JavaFX Span Tableview 通过 MapEntries 合并单元格

    你好 我有以下地图 Map
  • 如何仅通过鼠标使用 javafx 在表格视图中选择多个单元格?

    我有一个在 javafx 中带有表格视图的应用程序 我想仅通过鼠标选择多个单元格 类似于 Excel 中存在的选择 我尝试过 但我不能做某事 这个问题的正确答案在这里https community oracle com thread 262
  • JavaFX 8:拦截应用程序“退出”

    为了验证用户所做的所有更改是否已保存 我想拦截 JavaFX 应用程序的退出 退出 是否有一种通用的方法来实现这一目标 例如覆盖事件 或者还有更多方法吗 正如他们已经说过的 这是通过拦截来完成的WindowEvent WINDOW CLOS
  • 从 javaFX 场景拖放到 Windows 资源管理器

    有什么方法可以从 javaFX 场景拖放到 Windows 资源管理器吗 就在这里 您应该使用 onDragDetected 函数来启动拖放事件 并使用 onDragDone 函数在完成拖放后执行您想要的任何操作 这里有一个例子 final
  • JavaFX 中的隐形舞台/场景

    我正在寻找一种隐藏 JavaFX 舞台或场景的方法 现在我知道了 hide 但这行不通 我需要一些仍然保留窗口的东西 但只是使其完全透明 一个很好的比喻是display none and visibility hidden在CSS中 第一个
  • #region 描述编译到.net 中的.exe 中?

    region endregion 指令 描述 是否编译到 NET 中的 EXE 中 我知道注释不是 但我经常在一个区域内对代码组进行分块并给出有用的描述 我想确保这些描述在我编译的代码中不可见 我不是在寻找混淆信息 不过 谢谢 不 他们不是
  • JavaFX 的 Swing 计时器替代方案以及线程管理差异

    使用 JavaFX 的 Swing 计时器是否安全 或者 Swing 有特殊的替代方案吗 JavaFX 和 Swing 的线程管理有什么区别 事实上我很想知道相当于摇摆计时器 SwingUtilities invokeLater and i
  • 尝试使 Tableview 可点击时发生 JavaFX 错误

    我正在尝试使表格视图可单击 它将返回单击的单元格中的文本 尝试在 Netbeans 中编译时收到两个错误 所有代码均取自 示例12 11 单元格编辑的替代解决方案 官方表格视图教程 http docs oracle com javafx 2
  • FXML load() 期间出现 JavaFX IllegalAccessException

    我有一个由以下代码调用的对话框窗口 DialogController是使用模式对话框窗口的辅助类 它主要将控制器引用与其窗口捆绑在一起 void handleServicesEdit ActionEvent event throws IOE
  • 从后台线程更新可观察列表的正确方法

    我正在尝试遵循 MVC 进行测试项目 因此我的模型应该完全独立于我的观点 但是我不确定应该如何更新在后台线程中更新的可观察列表 正在给出有关上传的字符串 文件 以便消息显示在 UI 上的 ListView 中 我正在使用 JavaFX 并尝
  • JavaFX 自定义列表单元格,updateItem 被多次调用

    我正在使用一个ListView在 JavaFX 应用程序中 列表中的项目需要的不仅仅是一个字符串来显示它们 所以我做了一个自定义实现ListCell
  • 如何使用 JavaFX 中的 JCSG 库将 MeshView 转换为 CSG 对象

    我正在使用 JavaFX 的 JCSG 库 我有一些MeshView我想将它们转换成的对象CSG对象 有办法实现吗 最简单的方法是组合javafx scene shape Mesh对象与 CSG 对象 前提是您有TriangleMesh正在
  • 在自动触发的默认侦听器之前触发 Hibernate 自定义事件侦听器

    我创建了一个自定义 Hibernate 事件监听器 扩展了 org hibernate event PreInsertEventListener 自定义侦听器会重写 onPreInsert 方法 并在使用 DAO 将 联系人 实体保存到数据
  • 在 CSS 中设置 TableView 样式 (JavaFX)

    如何在 TableView 中设置 THIS 点的样式 我的 CSS 代码如下所示 Empty Stylesheet file root fx background color 262626 table view fx background
  • 检测 TableView JavaFX 行上的双击

    我需要检测 a 的一行上的双击TableView 如何监听该行任何部分的双击并获取该行的所有数据并将其打印到控制台 TableView
  • JavaFx ComboBox 绑定混乱

    我有一个 I18N 实现 它通过属性绑定 JavaFX UI 元素 例如 def translateLabel l Label key String args Any Unit l textProperty bind createStrin
  • 访问 java jigsaw 模块中的资源文件[重复]

    这个问题在这里已经有答案了 我正在尝试从项目中的类访问 Eclipse 项目中的文件 我需要将该项目声明为 jigsaw 模块才能从其他项目访问它 但是通过这样做 我无法再访问项目中的 example png 等文件 这是我的项目结构 pr
  • Java Swing:清除JList而不触发监听器

    我的情况如下 我有一个 JList 只要在列表中进行选择 它就会触发搜索 使用 ListSelectionListener 我正在尝试使用以下命令重置列表上的选择list clearSelection 这样做的问题是使用clearSelec

随机推荐

  • 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