亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NullPointerException 盡管 fx:id 和 fx:controller 是正確的

NullPointerException 盡管 fx:id 和 fx:controller 是正確的

慕工程0101907 2023-03-09 14:33:03
我正在為我的 lan 應用程序創建包含日志的表。當我嘗試運行此應用程序時,它會拋出 NullPointerException,但 fx:id 和 fx:controller 是正確的。我正在使用 JavaFX 12。我嘗試使用 Intellij 重構 fx:id 和 fx:controller,Intellij 也在 logPane.fxml 和 LogPaneController.class 中正確地更改了它,但它仍然無法正常工作。如果我注釋掉異常所在的行,則所有應用程序都可以正常工作。我用谷歌搜索短語“FXML 組件返回 NUllPointerException”,但結果始終是“您的 fx:id 或 fx:controller 名稱在控制器中不相同”。日志面板.fxml<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.control.*?><?import javafx.scene.layout.*?><AnchorPane HBox.hgrow="ALWAYS" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"            fx:controller="com.lanssmaker.controller.LogPaneController">    <children>        <TableView fx:id="logTable" prefHeight="574.0" prefWidth="382.0" AnchorPane.bottomAnchor="0.0"                   AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">            <columns>                <TableColumn maxWidth="140.0" minWidth="70" prefWidth="70.0" text="Time"/>                <TableColumn text="Content"/>                <TableColumn maxWidth="140.0" minWidth="70" prefWidth="70.0" text="Category"/>            </columns>            <columnResizePolicy>                <TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>            </columnResizePolicy>        </TableView>    </children></AnchorPane>LogPaneController.classpublic class LogPaneController {    @FXML    private TableView<Log> logTable; //it's null    public TableView<Log> getLogTableView() {        return logTable;    }    public void initialize() {        //example ussage calling NullPointerException        logTable.isHover();    }}
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

仔細查看堆棧跟蹤:


...

Caused by: javafx.fxml.LoadException: 

/D:/Programming/Java/javastart/ssmaker/target/classes/fxml/buttonsPane.fxml

/D:/Programming/Java/javastart/ssmaker/target/classes/fxml/mainPane.fxml:17

...

Caused by: java.lang.NullPointerException

    at ssmaker/com.lanssmaker.controller.LogPaneController.initialize(LogPaneController.java:25)

這意味著當您加載buttonsPane.fxml時發生異常FXMLLoader


<fx:include source="buttonsPane.fxml"/>

元素。


此外,它告訴我您不僅使用LogPaneControllerfor logPane.fxml,還使用 for buttonsPane.fxml。每次加載 fxml 時都會創建單獨的控制器實例;使用<fx:include>結果FXMLLoader會創建一個單獨的實例來加載包含的 fxml。logTable僅為其中之一注入該字段;對于其他控制器實例,它仍然存在null。buttonsPane.fxml(這甚至忽略了加載發生在加載之前的事實logPane.fxml,所以即使在加載buttonsPane.fxml完成時使用了相同的控制器實例,也TableView沒有基于創建logPane.fxml。)


buttonsPane.fxml為和使用單獨的控制器類logPane.fxml。您不會通過簡單地使用相同的控制器類來讓兩個 fxml“進行通信”。我會建議一個替代方案,但你在那里做的事情沒有任何意義(除非你試圖挑起 NPE):isHover簡單地重新調整屬性的值hover,該屬性始終false用于尚未屬于 a 的節點Scene。


查看完整回答
反對 回復 2023-03-09
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

你有私有 logTable 的 getter 類,所以你可以獲得一個值,但我沒有看到值初始化或 setter 類(它將初始化值)。



查看完整回答
反對 回復 2023-03-09
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號