JavaFX et ControlsFX - Notification interne

Maven JavaFX et ControlsFX

<dependencies>
   <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>20.0.1</version>
   </dependency>
   <dependency>
      <groupId>org.controlsfx</groupId>
      <artifactId>controlsfx</artifactId>
      <version>11.1.2</version>
   </dependency>
</dependencies>

NotificationPane

import org.controlsfx.control.NotificationPane;
import org.controlsfx.control.action.Action;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class App extends Application {

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

  @Override
  public void start(Stage stage) {
    // La notification
    NotificationPane notificationPane = new NotificationPane(new VBox());

    // Message de la notification
    notificationPane.setText("Mise à jour terminée. Voulez-vous redémarrer l'application ?");

    // false pour cacher le bouton fermer
    notificationPane.setCloseButtonVisible(true);

    // Création d'une action (bouton) dans la notification
    notificationPane.getActions().add(new Action("Redémarrer", (e) -> {
      // Cache la notification lorsque le bouton est cliqué
      notificationPane.hide();
      System.out.println("Action !");
    }));

    Button updateBtn = new Button("Mettre à jour");
    updateBtn.setOnAction((event) -> {
      notificationPane.show();
    });

    var scene = new Scene(new StackPane(notificationPane, updateBtn), 600, 480);
    stage.setScene(scene);
    stage.show();
  }

}

Commentaires