web-dev-qa-db-fra.com

Comment définir le remplissage entre les colonnes d'un GridPane JavaFX?

J'essaie de montrer une grille à 2 colonnes dans un programme javaFx. Voici comment je configure la grille:

    GridPane grid = new GridPane();

    ColumnConstraints column1 = new ColumnConstraints();
    column1.setPercentWidth(50);
    ColumnConstraints column2 = new ColumnConstraints();
    column2.setPercentWidth(50);
    grid.getColumnConstraints().addAll(column1, column2); 

Voici le problème. Je veux montrer un petit espace entre la fin d'une colonne et la fin de l'autre. Cependant, les colonnes apparaissent collées les unes aux autres.

Voici une capture d'écran:

screenshot

Ici, chaque colonne contient les boutons "nom de l'élément" et "traiter, modifier, supprimer".

Vous pouvez voir comment les colonnes sont collées ensemble. Je veux plutôt qu'ils aient un peu d'espace entre eux.

Comment puis-je résoudre ça?

La hiérarchie de mon interface utilisateur globale est la suivante:

Scène> ScrollPane> BorderPane> Vbox (Centre)> GridPane

25
Click Upvote

Pour une meilleure apparence, vous pouvez utiliser un mélange de:

grid.setHgap(10); //horizontal gap in pixels => that's what you are asking for
grid.setVgap(10); //vertical gap in pixels
grid.setPadding(new Insets(10, 10, 10, 10)); //margins around the whole grid
                                             //(top/right/bottom/left)
52
assylias

En plus de la réponse d'assylias, vous pouvez configurer la marge pour n'importe quel nœud donné dans la grille:

GridPane.setMargin(node, new Insets(5, 10, 5, 10));

GridPane.setMargin javadoc:

Définit la marge pour l'enfant lorsqu'il est contenu dans un volet de grille. S'il est défini, le volet de grille le disposera avec l'espace de marge autour. Définir la valeur sur null supprimera la contrainte.

Finalement (après Java 8), JavaFX peut vous permettre de définir une marge autour de n'importe quel nœud, pas seulement ceux d'un GridPane.

15
jewelsea