Question

Si je souhaite ajouter une ligne de champs de texte par programme dans JavaFx, je peux simplement utiliser la méthode d'ajout de grille.

Cela ajoute un ensemble de champs de texte à la ligne 1.

for (int i = 0; i < Fields.size(); i++) {
   gridpane.add(new TextField(), i, 1);
}

De même, comment supprimer une ligne ?.Je ne trouve pas de méthode appropriée pour supprimer facilement une ligne/colonne dans JavaFX.

Était-ce utile?

La solution

Il n'existe pas de méthode directement équivalente.Pour supprimer des nœuds, utilisez simplementgridpane.getChildren().remove(...); ou gridpane.getChildren().removeAll(...); et transmettez les nœuds que vous souhaitez supprimer du volet.

Autres conseils

En Java 8+, vous pouvez utiliser removeIf:

gridPane.getChildren().removeIf(node -> GridPane.getRowIndex(node) == rowNumber);

Mise en garde
Si vous supprimez des éléments du 0ème rangée, vérifiez également GridPane.getRowIndex(node) == null, c'est à dire.,

node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0

(Je pense que c'est JavaFX qui laisse le numéro de ligne comme null lorsqu'aucun numéro de ligne n'est donné dans l'élément correspondant dans FXML, même si ne donner aucun numéro de ligne dans FXML signifie que l'élément est dans la 0ème ligne, puisque la ligne par défaut est la 0ème ligne.)

Cela fonctionne assez bien:

while(MainGridPane.getRowConstraints().size() > 0){
    MainGridPane.getRowConstraints().remove(0);
}

while(MainGridPane.getColumnConstraints().size() > 0){
    MainGridPane.getColumnConstraints().remove(0);
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top