這可能是試點錯誤,但FXML屬性未綁定到fx:id上的控制器類。我已經削減了一個微不足道的例子,但仍然「沒有喜樂」。我忽略了什麼?JavaFx元素未綁定到fx上的控制器變量:id
FXML文件...
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane fx:id="mainFrame" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.controller.BorderPaneCtrl">
<left>
<AnchorPane fx:id="anchorPaneLeft" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
</left>
</BorderPane>
相關的Java代碼是...
package sample.controller;
import javafx.fxml.FXML;
import javafx.scene.layout.AnchorPane;
public class BorderPaneCtrl {
@FXML private AnchorPane anchorPaneLeft;
public BorderPaneCtrl() {
/* so, @FXML-annotated variables are accessible, but not
* yet populated
*/
if (anchorPaneLeft == null) {
System.out.println("anchorPaneLeft is null");
}
}
/* this is what was missing...added for "completeness"
*/
@FXML
public void initialize() {
/* anchorPaneLeft has now been populated, so it's now
* usable
*/
if (anchorPaneLeft != null) {
// do cool stuff
}
}
自我是不是一個問題在這裏,我敢肯定,我俯瞰簡單的東西。
我沒有在你的'BorderPaneCtrl'類看包。在FXML文件中,您有'sample.controller.BorderPaneCtrl' –
包聲明在那裏,但它不是問題。我註釋了我的原始帖子,以顯示我失蹤的內容。 – SoCal