45

我有一组按钮:

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

我想在这些按钮之间添加一些间距,而不使用 CSS 样式表。我认为应该有办法做到这一点。

setPadding();是为Buttons 中的VBox
setMargin();应该是为了VBox自己。但是我没有找到按钮之间间距的方法。

我很高兴有任何想法。:)

4

4 回答 4

78

VBox支持间距:

VBox menuButtons = new VBox(5);

或者

menuButtons.setSpacing(5);
于 2013-08-21T18:37:09.760 回答
19

只需调用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();
    }
}

这就是它的外观:

没有间距:

在此处输入图像描述

带间距:

在此处输入图像描述

于 2013-08-21T18:51:48.060 回答
12

如果您使用 FXML,请使用以下spacing属性:

<VBox spacing="5" />
于 2015-11-05T19:38:26.720 回答
8

正如其他人提到的,您可以使用setSpacing().

但是,您也可以使用setMargin(),它不是用于窗格(或您的话中的框),而是用于单个Nodes。setPadding()方法适用于窗格本身。实际上,setMargin()将节点作为参数,因此您可以猜测它的用途。

例如:

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()每个单独的节点,这将是荒谬的。但是,setMargin()如果您需要节点周围的边距(duh),您可以确定每边有多少,因为setSpacing()方法在节点之间放置空间,而不是在节点和窗口边缘之间放置空间。

于 2016-09-21T14:19:28.643 回答