У вас действительно есть несколько проблем. Прежде всего, ваш корень VBox
имеет AnchorPane
в качестве дочернего элемента, который в свою очередь содержит отдельные узлы.
Это приводит к тому, что вы вынуждены устанавливать координаты X / Y для этих узлов вручную. Это очень плохо спроектировано.
Вместо этого вы должны использовать различные панели компоновки, предоставляемые JavaFX, для обработки раскладки узлов.
Вот очень простой пример, похожий на ваш макет, и он полностью масштабируемый:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ProgressBar?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<VBox alignment="TOP_CENTER" spacing="10.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1">
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<children>
<Label text="BeatBox">
<font>
<Font name="Tempus Sans ITC" size="48.0"/>
</font>
</Label>
<HBox alignment="CENTER" spacing="10.0" VBox.vgrow="ALWAYS">
<children>
<Button mnemonicParsing="false" text="Sign Up"/>
<ProgressBar prefWidth="200.0" progress="0.0"/>
<Button mnemonicParsing="false" text="Sign In"/>
</children>
</HBox>
</children>
</VBox>
Обратите внимание, что я использую HBox
под заголовком, чтобы расположить кнопки горизонтально. Нет необходимости вручную устанавливать координаты или размеры; пусть JavaFX сделает всю работу за вас!
Результат:
Сценарист Heirarchy: