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 de feuille CSS. Je pense qu'il devrait y avoir un moyen pour cela.
setPadding (); est pour les boutons dans la boîte. setMargin (); devrait être pour la boîte elle-même. Mais je n'ai pas trouvé de moyen pour l'espacement entre les boutons.
Je suis content pour toutes les idées. :)
VBox
prend en charge l'espacement:
VBox menuButtons = new VBox(5);
ou
menuButtons.setSpacing(5);
Appelez simplement la méthode setSpacing
et transmettez une valeur. Exemple avec HBox
(c'est la même chose 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 voici à quoi ça ressemble:
Sans d'espacement:
Avec espacement:
Si vous utilisez FXML, utilisez l'attribut spacing
:
<VBox spacing="5" />
Comme d'autres l'ont mentionné, vous pouvez utiliser setSpacing()
.
Cependant, vous pouvez également utiliser setMargin()
, ce n'est pas pour le volet (ou la boîte dans vos mots), c'est pour les Node
s individuels. La méthode setPadding()
concerne le volet lui-même. En fait, setMargin()
prend un nœud comme paramètre pour que vous puissiez 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 pourriez obtenir le même résultat en remplaçant cette ligne par
pane.setSpacing(10);
Si vous avez plusieurs nœuds qui doivent être espacés, la méthode setSpacing()
est beaucoup plus pratique car vous devez appeler setMargin()
pour chaque nœud individuel et ce serait ridicule. Cependant, setMargin()
est ce dont vous avez besoin si vous avez besoin de marges (duh) autour d'un nœud que vous pouvez déterminer combien de chaque côté car les méthodes setSpacing()
placent des espaces niquement entre les nœuds, pas entre le nœud et les bords de la fenêtre.