JavaFX ScrollPane – 检查显示的组件
发布时间:2020-12-15 04:28:07 所属栏目:Java 来源:网络整理
导读:我想知道 JavaFX 8中是否有ScrollPane属性可用于侦听当前在给定时间显示的组件. 例如, ScrollPane有一个VBox,有8个按钮.滚动窗格中只能看到4个按钮.我想要一个监听器,它会在滚动位置发生变化时显示8个按钮中的4个. 解决方法 您可以检查节点是否可见: privat
我想知道
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; } 此方法返回所有可见节点的列表. 如果你想在属性中创建自己的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)); } 有关完整代码,请参阅BitBucket (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 通用类型和性能
- Java原生服务器接收上传文件 不使用MultipartFile类
- java – 在JBoss AS 6中监听登录事件
- JSP Response.getMaxInactiveInterval()方法:获取session的
- java – 在body exception spring rest中添加新字段
- java – Integer缓存有多大?
- java – Jersey Expires Header无效
- java-8 – Weblogic 12.2.1 Java 8 Spring Data JPA Hibern
- java – 如何处理国际化“你的输入”xyz是非常好的!“
- Java Set.isEmpty()方法:判断Set集合对象是否为空