Ответ
В JavaFX контейнеры (Pane) управляют layout'ом дочерних элементов. Вот как основные из них работают как "роутеры" контента:
-
StackPane: Накладывает элементы друг на друга в стеке. Видимым обычно является верхний элемент.StackPane root = new StackPane(); Button btn1 = new Button("Button 1"); Label label = new Label("Overlaid Label"); root.getChildren().addAll(btn1, label); // Label будет поверх Button -
TabPane: Организует контент по вкладкам. КаждаяTabсодержит свой узел (Node).TabPane tabPane = new TabPane(); Tab tab1 = new Tab("View 1", new Label("Content for Tab 1")); Tab tab2 = new Tab("View 2", new Button("Click Me")); tabPane.getTabs().addAll(tab1, tab2); -
BorderPane: Размещает элементы в пяти фиксированных областях (top, bottom, left, right, center).BorderPane borderPane = new BorderPane(); borderPane.setTop(new MenuBar()); // Меню сверху borderPane.setCenter(new TextArea("Main Content")); // Основной контент в центре borderPane.setLeft(new NavigationTree()); // Навигация слева -
Сторонние библиотеки для навигации (например, FXRouter): Предоставляют абстракцию для переключения целых сцен (FXML/Java-классы) по строковым путям.
// Инициализация FXRouter.bind(this, primaryStage, "My App", 800, 600); FXRouter.when("main", "/views/main.fxml"); FXRouter.when("detail", "/views/detail.fxml"); FXRouter.goTo("main"); // Загрузка и отображение main.fxmlКлючевое отличие: Стандартные
Paneуправляют layout'ом внутри одного окна, а библиотеки вроде FXRouter управляют переключением между разнымиSceneили корневыми узлами, что ближе к концепции роутинга в веб.