Доступ к FXML элементам и Controller - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, господа программисты! Имеется следующий FXML-код. Не заморачивайтесь пытаясь понять что внутри. Я скажу в двух словах: есть элементы Button и несколько текстовых полей.
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="538.0" prefWidth="695.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <HBox layoutX="19.0" layoutY="14.0" prefHeight="270.0" prefWidth="657.0">
         <children>
            <ScrollPane prefHeight="270.0" prefWidth="328.0">
               <content>
                  <TreeView prefHeight="270.0" prefWidth="329.0" />
               </content>
            </ScrollPane>
            <ScrollPane prefHeight="270.0" prefWidth="327.0">
               <content>
                  <ListView prefHeight="269.0" prefWidth="327.0" />
               </content>
            </ScrollPane>
         </children>
      </HBox>
      <VBox alignment="CENTER" layoutX="19.0" layoutY="298.0" prefHeight="123.0" prefWidth="201.0" spacing="5.0">
         <children>
            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Телефон" />
            <TextField fx:id="phoneField" />
            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="ФИО" textAlignment="CENTER" />
            <TextField fx:id="fioField" />
            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Адрес" />
            <TextField fx:id="addressField" />
            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Сумма" />
            <TextField fx:id="summField" />
            <Button fx:id="addButton" mnemonicParsing="false" prefHeight="25.0" prefWidth="85.0" text="Добавить" />
         </children>
         <opaqueInsets>
            <Insets />
         </opaqueInsets>
      </VBox>
      <VBox alignment="CENTER" layoutX="467.0" layoutY="298.0" prefHeight="70.0" prefWidth="201.0" spacing="5.0">
         <children>
            <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Количество записей" />
            <TextField fx:id="readFileTextField" maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefHeight="25.0" prefWidth="154.0" />
            <Button fx:id="readFileButton" mnemonicParsing="false" prefHeight="25.0" prefWidth="118.0" text="Считать из файла" />
         </children>
         <opaqueInsets>
            <Insets />
         </opaqueInsets>
      </VBox>
   </children>
</Pane>
Собственно вопрос: как получить доступ к этим элементам из Java-кода? Есть ли какие-нибудь функции для доступа к элементам по fx:id или что-нибудь проще? Довольно много перегуглил, ответа не нашел... У меня есть следующий код:
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("lab1");
        primaryStage.setScene(new Scene(root, 690, 550));
        primaryStage.getScene();
        primaryStage.setResizable(false);
        primaryStage.show();
Что он делает, я знаю. Вопрос номер два: для чего используется класс Controller, который реализует интерфейс Initializable? Хотел бы разрабатывать приложение правильно, а т.к. этот класс IDEA создаёт по умолчанию, есть повод полагать что использовать контроллер правильно. Прошу помощи сообщества. Я в тупике.

Решение задачи: «Доступ к FXML элементам и Controller»

textual
Листинг программы
@FXML
Button addButton;
...
System.out.println(addButton); //=> null

Оцени полезность:

11   голосов , оценка 4 из 5