Из вашего вопроса я понимаю, что вы не знакомы с идеей контроллера или соответствующей инъекцией FXML, выполняемой FXMLLoader
. В этом ответе James_D рассматриваются самые основы жизненного цикла JavaFX, но сначала рассматриваются основы процедуры, используемой при загрузке файла FXML.Если вы хотите изменить граф сцены, загруженный через FXML, вам нужно использовать класс контроллера с соответствующими FXML
аннотированными полями.Например, предположим, что ваш родитель BorderPane
.В вашем файле FXML у вас будет:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane fx:id="parent" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/10.0.1"
fx:controller="some.package.YourController">
<top>
<!-- maybe have something like a MenuBar here -->
</top>
<bottom>
<!-- maybe have a some type of status bar here -->
</bottom>
</BorderPane>
Обратите внимание на атрибут fx:controller
;это имя класса для создания экземпляра и использования в качестве контроллера.Также обратите внимание на атрибут fx:id
.В вашем классе контроллера у вас будет:
package some.package;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXML;
public class YourController {
@FXML
private BorderPane parent; // field name matches the fx:id attribute
@FXML
private void initialize() {
// do any initializing if needed (if not, get rid of this method)
// you can access and modify any FXML injected field from this method
}
}
Тогда вы можете использовать родительский элемент через экземпляр контроллера.Вы также можете создавать и связывать методы обработчика событий в контроллере и выполнять определенное поведение в зависимости от действий пользователя.Однако важно отметить, что то, как вы изменяете состояние пользовательского интерфейса в контроллерах, зависит от того, как вы получаете доступ к классам модели.Вам нужно будет иметь доступную модель для вашего контроллера и, возможно, разделить ее между несколькими контроллерами.В «Переполнении стека» имеется достаточное количество вопросов / ответов о том, как это сделать.
Вот еще один ресурс, который может вам помочь: Введение в FXML .