JavaFX display none

La fonction setManaged(false) permet de ne pas prendre en compte la mise en page d'un élément. L'élément sera toujours visible.

La fonction setVisible(false) permet de cacher l'élément sans retirer la mise en page.

Les deux fonctions combinées permettent d'avoir l'équivalent d'un display: none; en CSS.

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  private Pane pane;

  @Override
  public void start(Stage stage) {

    /* Elément racine avec espace de 10 */
    VBox root = new VBox(10);

    /* Le panneau à cacher et son label */
    pane = new Pane();
    Label label = new Label("Bonjour !");
    pane.getChildren().addAll(label);

    /* Le bouton pour cacher le panneau */
    Button button = new Button("Afficher / Cacher Panneau");

    /* Exécute la fonction handleButtonTogglePane quand le bouton est cliqué */
    button.setOnAction(this::handleButtonTogglePane);

    /* Ajoute les composants à l'élément racine */
    root.getChildren().addAll(pane, button);

    /* Ajoute l'élément racine à la scene et affiche la fenêtre */
    Scene scene = new Scene(root, 640, 480);
    stage.setScene(scene);
    stage.show();
  }

  public void handleButtonTogglePane(ActionEvent event) {
    /* setVisible équivalent à visibility: hidden; en CSS
     * L'élément n'est plus visible 
     * mais la mise en page de l'élément est encore visible
     **/
    pane.setVisible(!pane.isVisible());
    /* setManaged équivalent à display : none; en CSS 
     * Permet de faire disparaître la mise en page de l'élément
     **/
    pane.setManaged(!pane.isManaged());
  }

  public static void main(String[] args) {
    launch();
  }

}

Commentaires