簡體   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