栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何访问ScrollPane的滚动条

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何访问ScrollPane的滚动条

由于上述方法并不适合所有人(包括我),因此我对其进行了更多调查,并找到了问题的根源。

一般而言,这两种方法都可以使用,但是只有在设置了

ScrollPane
skin
属性后才能使用。就我而言,
skin
仍然是
null
在使用加载视图后仍然存在
FXMLLoader

通过在

skin
属性未初始化的情况下延迟调用(使用单次侦听器)可以解决此问题。

工作样板代码:

ScrollPane scrollPane;// ...if (scrollPane.getSkin() == null) {    // Skin is not yet attached, wait until skin is attached to access the scroll bars    ChangeListener<Skin<?>> skinChangeListener = new ChangeListener<Skin<?>>() {        @Override        public void changed(Observablevalue<? extends Skin<?>> observable, Skin<?> oldValue, Skin<?> newValue) { scrollPane.skinProperty().removeListener(this); accessScrollBar(scrollPane);        }    };    scrollPane.skinProperty().addListener(skinChangeListener);} else {    // Skin is already attached, just access the scroll bars    accessScrollBar(scrollPane);}private void accessScrollBar(ScrollPane scrollPane) {    for (Node node : scrollPane.lookupAll(".scroll-bar")) {        if (node instanceof ScrollBar) { ScrollBar scrollBar = (ScrollBar) node; if (scrollBar.getOrientation() == Orientation.HORIZONTAL) {     // Do something with the horizontal scroll bar     // Example 1: Print scrollbar height     // System.out.println(scrollBar.heightProperty().get());     // Example 2: Listen to visibility changes     // scrollBar.visibleProperty().addListener((observable, oldValue, newValue) -> {     //     if(newValue) {     //         // Do something when scrollbar gets visible     //     } else {     //         // Do something when scrollbar gets hidden     //     }     // }); } if (scrollBar.getOrientation() == Orientation.VERTICAL) {     // Do something with the vertical scroll bar }        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号