Dans ton GridPane tes boutons sont stockés dans une liste donc pas dans une grille. Si tu veux savoir quel bouton est sur quelle grille/colonne tu dois soit retirer l'info existante soit rajouter une info supplémentaire pour la stocker.
Déjà ça... c'est pas le GridPane de JavaFX
grille.add(xoButton, i,j);
Comme l'indique la doc, pour ajouter du contenu dans GridPane il faut procéder d'une des deux manières suivantes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| GridPane gridpane = new GridPane();
// 1.
// Set one constraint at a time...
// Places the button at the first row and second column
Button button = new Button();
GridPane.setRowIndex(button, 0);
GridPane.setColumnIndex(button, 1);
// 2.
// or convenience methods set more than one constraint at once...
Label label = new Label();
GridPane.setConstraints(label, 2, 0); // column=2 row=0
// don't forget to add children to gridpane
gridpane.getChildren().addAll(button, label); |
Ce qu'on peut voir :
- La méthode statique GridPane.setRowIndex() permet de spécifier la ligne.
- La méthode statique GridPane.setColumnIndex() permet de spécifier la colonne.
- La méthode statique GridPane.setConstraints() permet de spécifier les deux.
En fait chacune de ces méthode stocke une valeur dans la Map retournée par la méthode getProperties() qui existe dans chaque nœud. Par exemple setColumnIndex() stocke la valeur "gridpane-column" dans cette Mp tandis que setRowIndex() stocke la valeur "gridpane-row". GridPane.setConstraints() utilise bien sur les 2 valeurs. Ces valeurs (et d'autres) sont utilisées pour la mise en page des composants inclus dans un GridPane.
Il t'es donc possible aussi de retirer ces valeurs et de chercher celles qui t'intéressent.
Mais rien ne t'empêche non plus de stocker l'info à ta sauce soit dans l'id du bouton, soit en stockant tes propres valeurs avec tes propres clés (de manière à ne pas intéférer avec celles de GridPane qui sont après tout définies dans l'API et peuvent changer du jour au lendemain) dans les propriété de chaque bouton.
1 2 3 4 5 6
| Button xoButton = new Button(" ");
xoButton.setId("%d-%d".formatted(row, column));
xoButton.getProperties().put("my-row", row);
xoButton.getProperties().put("my-column", column); |
PS : dans ton code tu ne mets pas de RowConstraints et de ColumnsConstraints dans ta grille ce qui peut être gênant.
Partager