web-dev-qa-db-fra.com

JavaFX - Comment supprimer un Node spécifique d'un AnchorPane

J'utilise SceneBuilder 8.0.0 et JavaFX 8.
J'ai un Button btn et un Label lbl attaché à un AnchorPane ap.
Au démarrage de l'application, btn et lbl sont attachés à ap.

Comment puis-je supprimer l'un de ces nœuds? (je ne connais que la méthode clear () qui supprime tous les nœuds de ap). Merci.

12
Calips

Dans JavaFX, les nœuds peuvent simplement être supprimés d'un Parent (par exemple un AnchorPane ) en utilisant .getChildren() suivi de .remove(Object o)

Référence

Donc, si vous avez une référence directe à ces nœuds, vous pouvez utiliser le code suivant pour supprimer le Button du AnchorPane:

ap.getChildren().remove(btn);

Lookup

Si, pour une raison quelconque, vous n'avez pas de référence au Button btn vous pouvez utiliser lookup (String selector) pour le trouver et le supprimer comme ceci:

ap.getChildren().remove(ap.lookup('.button'));

FXML

Ou enfin, puisque vous utilisez SceneBuilder (et donc fxml), vous pouvez également vous assurer d'avoir un contrôleur connecté et attribuer un identifiant à votre bouton pour obtenir maintenez une référence et supprimez-la comme ceci:

// ... somewhere in your class
@FXML
private Button myButtonId;

// ... somewhere in a method
ap.getChildren().remove(myButtonId);
19
Mike Rombout