在VBox中添加按钮之间的空间

时间:2013-08-21 17:06:25

标签: javafx-2 javafx

我有一组按钮:

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

我想在这些按钮之间添加一些间距,而不使用CSS表。我认为应该有办法解决这个问题。

setPadding();是为了盒子里的按钮。 setMargin();应该是Box本身。但我找不到按钮间距的方法。

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

4 个答案:

答案 0 :(得分:52)

VBox支持间距:

VBox menuButtons = new VBox(5);

menuButtons.setSpacing(5);

答案 1 :(得分:16)

只需调用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

答案 2 :(得分:8)

如果您使用的是FXML,请使用spacing属性:

<VBox spacing="5" />

答案 3 :(得分:6)

正如其他人所说,您可以使用BroascastReceiver

但是,您也可以使用setSpacing(),它不适用于窗格(或您的文字中的框),而是适用于个人setMargin()Node方法适用于窗格本身。实际上,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()是您需要边距(duh)的节点,您可以确定每个边的数量,因为setMargin()方法只放置空格 在节点之间,而不是在节点和窗口边缘之间。