Affichage d'une fenêtre contextuelle JavaFX en Java

Rupam Yadav 12 octobre 2023
Affichage d'une fenêtre contextuelle JavaFX en Java

Dans cet article, nous verrons comment utiliser l’un des composants de la boîte à outils JavaFX appelé popup. Comme son nom l’indique, le composant contextuel affiche une simple fenêtre contextuelle lorsqu’il est exécuté à l’aide des fonctionnalités d’interface graphique de JavaFX. Voici deux exemples d’utilisation du composant contextuel.

Avant de passer au programme proprement dit, nous devons vérifier les méthodes et les classes avec le kit d’interface graphique JavaFX.

  • Stage : La classe de niveau supérieur dans JavaFX étend la fenêtre et crée une fenêtre où nous pouvons placer une scène.
  • Scène : une scène JavaFX est une autre classe qui rend les composants donnés de la boîte à outils JavaFX.
  • Classe d’application JavaFX : utilisée pour lancer l’application JavaFX, et la classe que nous utilisons doit étendre la classe d’application.

Venons-en maintenant au programme ; dans l’exemple ci-dessous, nous créons une classe Main et étendons la classe Application du package JavaFX. On appelle alors la méthode abstraite start() de la classe application, ce qui est essentiel car elle est exécutée au démarrage de l’application.

La méthode start() prend un seul argument de type Stage, créé automatiquement par le runtime JavaFX. Comme la stage est la fenêtre principale, on définit son titre à l’aide de stage.setTitle(), et pour ouvrir la popup JavaFX, on crée un objet composant Button.

Pour mettre en page les composants à l’intérieur de la fenêtre contextuelle, nous utilisons un composant de mise en page appelé TilePane qui affiche ses nœuds enfants sous forme de grille. Ensuite, nous créons un objet du composant Label à afficher dans la fenêtre contextuelle.

Nous créons un objet Popup et y ajoutons l’objet Label en utilisant la méthode popup.getContent.add(). Pour définir l’arrière-plan du Label, nous utilisons la méthode setStyle() et passons le style.

Ensuite, nous définissons la taille de l’étiquette en utilisant les méthodes setHeight() et setWidth(). Maintenant, nous créons une classe anonyme de gestionnaire d’événements pour ouvrir et fermer la fenêtre contextuelle lorsque le bouton est cliqué.

Dans la classe anonyme de type EventHandler<ActionEvent>, nous appelons popup.isShowing() et vérifions si le popup est visible à l’écran, et si ce n’est pas le cas, affichons-le en utilisant le popup.show() méthode dans laquelle l’objet stage est passé en argument. Pour masquer la popup, nous utilisons la fonction hide().

Maintenant, nous définissons le gestionnaire d’événements comme une action du button et ajoutons le button à l’objet de mise en page tilePane à l’aide de tilePane.getChildren().add(). Pour montrer tous les composants que nous avons créés, nous créons un objet Scene et passons tilePane et les écarts entre chaque grille.

Enfin, nous définissons l’objet stage sur l’objet stage et appelons la méthode show() de la classe stage. Enfin, nous appelons la méthode launch() de la classe Application avec les arguments des lignes de commande.

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.TilePane;
import javafx.stage.Popup;
import javafx.stage.Stage;

public class Main extends Application {
  public void start(Stage stage) {
    stage.setTitle("A Popup Example");
    Button button = new Button("Click to open a Popup");

    TilePane tilePane = new TilePane();
    Label label = new Label("This is a popup");

    Popup popup = new Popup();

    label.setStyle("-fx-background-color: grey;");
    popup.getContent().add(label);

    label.setMinWidth(100);
    label.setMinHeight(80);

    EventHandler<ActionEvent> actionEventHandler = et -> {
      if (!popup.isShowing()) {
        popup.show(stage);
        button.setText("Click to Hide a Popup");
      } else {
        popup.hide();
        button.setText("Click to open a Popup");
      }
    };

    button.setOnAction(actionEventHandler);
    tilePane.getChildren().add(button);

    Scene scene = new Scene(tilePane, 450, 360);
    stage.setScene(scene);
    stage.show();
  }

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

Sortie (avant d’ouvrir la popup) :

Fenêtre contextuelle Java Javafx

Sortie (après ouverture de la popup) :

Fenêtre contextuelle Java Javafx

Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Article connexe - Java JavaFX