Подтвердить что ты не робот

Добавление пробела между кнопками в VBox

У меня есть набор кнопок:

VBox menuButtons = new VBox();
menuButtons.getChildren().addAll(addButton, editButton, exitButton);

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

setPadding(); для кнопок в ящике. setMargin(); должен быть для самой коробки. Но я не нашел способ для расстояния между кнопками.

Я рад за любые идеи.:)

4b9b3361

Ответ 1

VBox поддерживает интервал:

VBox menuButtons = new VBox(5);

или

menuButtons.setSpacing(5);

Ответ 2

Просто вызовите метод setSpacing и передайте некоторое значение. Пример с HBox (он же для VBox):

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBoxBuilder;
import javafx.stage.Stage;

public class SpacingDemo extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        stage.setTitle("Spacing demo");

        Button btnSave = new Button("Save");
        Button btnDelete = new Button("Delete");
        HBox hBox = HBoxBuilder.create()
                .spacing(30.0) //In case you are using HBoxBuilder
                .padding(new Insets(5, 5, 5, 5))
                .children(btnSave, btnDelete)
                .build();

        hBox.setSpacing(30.0); //In your case

        stage.setScene(new Scene(hBox, 320, 240));
        stage.show();
    }
}

И вот как это выглядит:

Без интервала:

enter image description here

С интервалом:

enter image description here

Ответ 3

Если вы используете FXML, используйте атрибут spacing:

<VBox spacing="5" />

Ответ 4

Как уже упоминалось, вы можете использовать setSpacing().

Однако вы также можете использовать setMargin(), это не для панели (или поля в ваших словах), это для отдельных Node s. setPadding() метод предназначен для самой панели. Фактически, setMargin() принимает параметр node как параметр, поэтому вы можете догадаться, для чего он нужен.

Например:

HBox pane = new HBox();
Button buttonOK = new Button("OK");
Button buttonCancel = new Button("Cancel");
/************************************************/
pane.setMargin(buttonOK, new Insets(0, 10, 0, 0)); //This is where you should be looking at.
/************************************************/
pane.setPadding(new Insets(25));
pane.getChildren().addAll(buttonOK, buttonCancel);
Scene scene = new Scene(pane);
primaryStage.setTitle("Stage Title");
primaryStage.setScene(scene);
primaryStage.show();

Вы можете получить тот же результат, если вы заменили эту строку на

pane.setSpacing(10);

Если у вас есть несколько узлов, которые должны располагаться на расстоянии, метод setSpacing() намного удобнее, потому что вам нужно называть setMargin() для каждого отдельного node, и это было бы смешно. Тем не менее, setMargin() - это то, что вам нужно, если вам нужны поля (duh) вокруг node, которые вы можете определить, насколько каждая сторона, потому что методы setSpacing() помещают пробелы только между узлами, а не между node и краями окна.