Доступ к FXML элементам и Controller - Java
Формулировка задачи:
Доброго времени суток, господа программисты!
Имеется следующий FXML-код. Не заморачивайтесь пытаясь понять что внутри. Я скажу в двух словах: есть элементы Button и несколько текстовых полей.
Собственно вопрос: как получить доступ к этим элементам из Java-кода? Есть ли какие-нибудь функции для доступа к элементам по fx:id или что-нибудь проще? Довольно много перегуглил, ответа не нашел...
У меня есть следующий код:
Что он делает, я знаю.
Вопрос номер два: для чего используется класс Controller, который реализует интерфейс Initializable? Хотел бы разрабатывать приложение правильно, а т.к. этот класс IDEA создаёт по умолчанию, есть повод полагать что использовать контроллер правильно.
Прошу помощи сообщества. Я в тупике.
<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>
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();
Решение задачи: «Доступ к FXML элементам и Controller»
textual
Листинг программы
@FXML Button addButton; ... System.out.println(addButton); //=> null