Ajouter de l'espace entre les boutons dans VBox
j'ai une collection de boutons:
VBox menuButtons = new VBox();
menuButtons.getChildren().addAll(addButton, editButton, exitButton);
je veux ajouter un peu d'espacement entre ces boutons, sans utiliser une feuille CSS. Je pense qu'il devrait être un moyen pour cela.
setPadding (); est pour les boutons dans la boîte. setMargin(); doit être pour la même Boîte. Mais je n'ai pas trouvé le moyen pour l'espacement entre les boutons.
je suis content pour toutes les idées. :)
4 réponses
VBox
prise en charge de l'espacement:
VBox menuButtons = new VBox(5);
ou
menuButtons.setSpacing(5);
appel setSpacing
méthode et passer un peu de valeur.
Exemple HBox
(il en est de même pour 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();
}
}
Et c'est à quoi il ressemble:
Sans espacement:
Avec un espacement:
si vous utilisez FXML, utilisez le spacing
l'attribut:
<VBox spacing="5" />
Comme d'autres l'ont mentionné, vous pouvez utiliser setSpacing()
.
cependant, vous pouvez aussi utiliser setMargin()
, il n'est pas pour le volet de la boîte ou dans vos mots), c'est pour Node
s. setPadding()
la méthode est pour la vitre elle-même. En fait, setMargin()
prend un noeud comme paramètre pour vous permettre de deviner à quoi il sert.
Par exemple:
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();
vous pouvez obtenir le même résultat si vous remplacez cette ligne par
pane.setSpacing(10);
si vous avez plusieurs noeuds qui devraient être espacées, setSpacing()
méthode est beaucoup plus pratique car vous devez appeler setMargin()
pour chaque nœud et ce serait ridicule. Cependant, setMargin()
est ce que vous avez besoin si vous avez besoin d' marges(duh) autour d'un nœud que vous pouvez déterminer combien de chaque côté car setSpacing()
méthodes places spaces entre les noeuds, pas entre le noeud et les bords de la fenêtre.