Я пытаюсь выяснить, есть ли способ получить ссылку на FXML для данного узла.JavaFX 8 есть способ получить ссылку FXML с узла?
Для примера я динамически загружаются взгляды - Предположим, у меня есть Pane ссылки в текущем контроллере:
private void openView() {
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
pane.getChildren().add(node);
node.requestFocus();
}
Я хотел бы сохранить, какие взгляды были открыты, так что я могу возобновить их в следующий раз окно открытый. Что-то вроде этого:
private void saveOpenViews() {
pane.getChildren().forEach(child -> {
String fxmlLocation = child.getFXML();
etc....
}
}
Я не могу найти способ, чтобы получить, что обратно упорствовать, что было открыто ... Надеялся, что есть способ, кроме ручного отслеживания в другом месте.
Спасибо.
При использовании FXML у вас обычно будет класс контроллера. Создайте абстрактный класс контроллера, который содержит необходимые методы getter и setter. Весь ваш контроллер расширит этот класс. Затем вы можете получить доступ к контроллеру с помощью fxmlLoader.getController() и вызвать установщик для местоположения FXML. Вы можете хранить контроллеры ваших открытых просмотров в списке. Как только метод save вызывается, вам нужно только перебрать ваши контроллеры и получить xml. Если вам нужна дополнительная гибкость для определения контроллера вида, вы можете использовать DataFX (http://www.guigarage.com/2014/05/datafx-8-0-tutorials/) –
Спасибо за информацию Хендрика. Вероятно, лучше всего давать ответы как ответы, а не комментарии. – jewelsea