Why member is not injected in JavaFX controller?

dependency-injection, fxml, java, javafx

Solution

Because I used `id` while was to use `fx:id` tag.

Problem

I have the following `FXML`: ``` <BorderPane fx:controller="mypackage.MainStage" id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2"> <bottom> <ToolBar> <items> <Slider id="slider" prefWidth="443.0" /> <Label text="Record:" /> <TextField prefWidth="46.0" /> <Label text=" of " /> <Label id="totalLabel" text="0" /> </items> </ToolBar> </bottom> <center> <Pane id="mainPane" prefHeight="200.0" prefWidth="200.0" /> </center> <top> <ToolBar> <items> <Button mnemonicParsing="false" text="Load more" /> </items> </ToolBar> </top> </BorderPane> ``` and the following controller code: ``` public class MainStage implements Initializable { @FXML private Pane mainPane; @FXML private Label totalLabel; @Override public void initialize(URL location, ResourceBundle resources) { totalLabel.setText("245"); } } ``` and the following application code ``` public class MyClass extends Application { @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource("MainStage.fxml")); Scene scene = new Scene(root); stage.setTitle("MyClass"); stage.setScene(scene); stage.show(); } public static void main( String[] args ) { launch(args); } } ``` If I set breakpoint to `initialize()` I see it is called, but member is `null`. Why isn't it injected?

Original source