45

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

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

CSS スタイル シートを使用せずに、これらのボタンの間にスペースを追加したいと考えています。これを行う方法があるべきだと思います。

setPadding();のはButtonです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()。これは、ペイン (またはボックス) 用ではなく、個々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()が必要な場合に必要なものです。setSpacing()

于 2016-09-21T14:19:28.643 に答える