Поля границы для отдельного элемента через java fx css

У меня есть следующий фрагмент файла fxml:

    <VBox fx:id="paneLeft">
        <TextField promptText="Password"/>
        <Button fx:id="btnLogin" text="Login" maxWidth="10000"/>
        <Hyperlink text="Registration"/>
    </VBox>

Мне нужно добавить интервал 10px между Button и Hyperlink. Я также хочу использовать CSS для этой задачи.

Ответ 1

Кажется, вы не можете. JavaFX теперь имеет ограниченную поддержку CSS.

Однако свойства заполнения и полей CSS поддерживаются на некоторых Объекты графика сцены JavaFX.

говорится в официальном справочном руководстве по CSS. Поэтому обходным путем может быть использование другого другого макета, например, другого VBox:

<VBox fx:id="paneLeft" spacing="10">
    <VBox fx:id="innerPaneLeft">
        <TextField promptText="Password"/>
        <Button fx:id="btnLogin" text="Login" maxWidth="10000"/>
    </VBox>
    <Hyperlink text="Registration"/>
</VBox>

Update:
Нашел немного более совершенный способ сделать это, но все же не CSS.

 <?import javafx.geometry.Insets?>

 <VBox fx:id="paneLeft">
        <TextField promptText="Password"/>
        <Button fx:id="btnLogin" text="Login" maxWidth="10000">
            <VBox.margin>
                <Insets>
                    <bottom>10</bottom>
                </Insets>
            </VBox.margin>
        </Button>
        <Hyperlink text="Registration"/>
 </VBox>

Это позволяет избежать ненужного дополнительного макета.

Ответ 2

Наверное, очень поздно для вечеринки, но я использую другой подход, который может быть полезен и для других.

Theres no -fx-margin: свойство 5px css для кнопок javafx, но вы можете обойти это поведение с помощью комбинации прокладок, вставки границ и фоновых вложений.

Например, кнопка с краем 5 пикселей.

.button-with-margin {
    -fx-padding: 5px;
    -fx-border-insets: 5px;
    -fx-background-insets: 5px;

}

В качестве альтернативы вы также можете определить более высокие значения заполнения и нижней вставки, если вы хотите отступы и поля.