繁体   English   中英

JavaFx 13 - TableView 垂直滚动条处理程序返回 NullPointerException

[英]JavaFx 13 - TableView Vertical ScrollBar handler returns NullPointerException

我需要处理 JavaFx13 滚动到底部事件,但此代码:

   @Override
   public void initialize(URL location, ResourceBundle resources) {
     // ...
     // ScrollBar verticalBar = (ScrollBar) this.emailsTable.lookupAll(".scroll-bar");
        ScrollBar verticalBar = (ScrollBar) this.emailsTable.lookup(".scroll-bar:vertical");
        verticalBar.valueProperty().addListener((obs, oldValue, newValue) -> { // <-- Line 49
             // if (verticalBar.getOrientation() != Orientation.VERTICAL) return;
            if (newValue.doubleValue() >= verticalBar.getMax()) {
                System.out.println("BOTTOM!");
            }
        });
     // ...
   }

...在 FXML 加载时返回该错误:

Caused by: java.lang.NullPointerException
at it.unito.prog.views.MainView.initialize(MainView.java:49)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573)
... 19 more

您可以使用tableView.scrollTo()滚动到索引或特定项目。

要收到滚动发生的通知,您可以使用tableView.setOnScrollTo()

不要为此任务使用查找

滚动条仅在需要时显示。 当您查找它时,它可能存在也可能不存在。

如果您在向 table view 添加项目之前,或者在将 table view 添加到场景之前,或者在场景经过渲染过程之前尝试lookup()滚动条,则几乎可以肯定滚动条不存在. 如果在您尝试查找时滚动条不存在,则查找方法将返回一个空值(这就是您所看到的)。 即使您第一次查找滚动条时有滚动条,它也可能随后被删除并根据需要添加一个新的滚动条,因此您的原始引用最终将变得无效。 所以我不推荐你的基于查找的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM