web-dev-qa-db-ja.com

VBoxのボタン間にスペースを追加する

ボタンのコレクションがあります:

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

CSSシートを使用せずに、このボタンの間にスペースを追加したいです。これには方法があるはずだと思います。

setPadding();ボックス内のボタン用です。 setMargin();ボックス自体に使用する必要があります。しかし、ボタン間の間隔を見つける方法が見つかりませんでした。

どんなアイデアでも嬉しいです。 :)

26
codepleb

VBoxは間隔をサポートします:

VBox menuButtons = new VBox(5);

または

menuButtons.setSpacing(5);
52
Sergey Grinev

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

16
Branislav Lazic

FXMLを使用している場合は、spacing属性を使用します。

<VBox spacing="5" />
8
gronostaj

他の人が述べたように、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()メソッドは、ノードとウィンドウの端の間ではなく、ノードの間にスペースonlyを配置するためです。

6
Haggra