15

I'm using SceneBuilder 8.0.0 and JavaFX 8.
I have a Button btn and a Label lbl attached to an AnchorPane ap.
When the application starts, btn and lbl are attached to ap.

How can i delete one of these nodes ? (i only know clear() method which deletes all the nodes from ap). thanks.

Mohamed Benmahdjoub
  • 1,270
  • 4
  • 19
  • 38
  • 1
    You're trying to delete a node at runtime programmatically? Hiding or making the node invisible is probably a better idea than changing the layout on the fly by deleting things... – Ryan J May 03 '15 at 19:55

1 Answers1

29

In JavaFX, nodes can simply be removed from a Parent (e.g. an AnchorPane) using .getChildren() following by .remove(Object o)

Reference

So if you have a direct reference to these Nodes, you could use the following code to remove the Button from the AnchorPane:

ap.getChildren().remove(btn);

Lookup

If you, for some reason, don't have a reference to the Button btn you can use lookup(String selector) to find and remove it like so:

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

FXML

Or finally, since you are using SceneBuilder (and thus fxml) you could also make sure you hava a Controller connected and assign an id to your Button to get ahold of a reference and remove it like so:

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

// ... somewhere in a method
ap.getChildren().remove(myButtonId);
Mike Rombout
  • 448
  • 4
  • 9
  • But I am getting NullPointerException whenever I am calling this method of controller class from my main class @Mike Rombout – Yonex May 09 '18 at 09:38