Intro:
Привет, у меня проблемы с FXML, и это сводит меня с ума.
История вопроса:
Я построил древовидную структуру данныхв Java это дерево представляет «состояние» моего GUI (Human interface). Для каждого узла этого дерева я хотел бы иметь соответствующий файл FXML, имя которого хранится в узлах дерева. Я надеюсь открыть корневой узел (специальные узлы в дереве) и вставить в него несколько свободных файлов FXML, в зависимости от текущего состояния дерева.
Проблемы:
Я не знаю, как передать переменные из приложения в FXML
Я не знаю, как создать экземпляр FXML с помощью fx:include
, отправить ему некоторые строковые параметры с помощьюссылки (на другой FXML) и создание гибкого приложения.
Что я пробовал
Все, что выглядело удаленно, как решение, вплоть до страницы Google 4, (duckduckgoстраница 2). Я не смог много попробовать, потому что, очевидно, никто никогда не хотел загружать страницы переменных / fxml.
Я также следовал этому руководству.
Класс приложения:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FXML loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Map<String, Object> namespace = loader.getNamespace();
namespace.put("a", "sample2.fxml");
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(loader.load(), 300, 275);
primaryStage.show();
}
public static void main(String[] args){launch(args);}
}
Файл FXML с include:
<GridPane fx:controller="sample.Controller"
xmlns:fx = "http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<fx:include source = "$a"/>
</GridPane>
Что происходит с данным примером
FXML не компилируется, потому что он не знает "$ a"