Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

JavaFX Empêcher fermeture fenêtre


Sujet :

JavaFX

  1. #1
    Candidat au Club
    JavaFX Empêcher fermeture fenêtre
    Bonjour, Je code actuellement un petit programme et j'aimerais empêcher la fermeture de ma fenêtre. J'ai essayé différentes solutions sur internet comme la fonction setDefaultCloseOperation() mais je n'y arrive pas. J'utilise JavaFX.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    this.stage = new Stage();
    		this.stage.setScene(this.scene);
     
    		fenetre=stage;
    		fenetre.setResizable(false); // Pas de modification de la taille de fenetre (évite les problèmes de redimensionnement)
    		fenetre.getIcons().add(this.logo); // Logo sur la fenetre
    		fenetre.setTitle("Accueil"); // Titre de la fenetre
    		fenetre.setDefaultCloseOperation(fenetre.DO_NOTHING_ON_CLOSE);
    		fenetre.show();


    Voilà la partie du code intéressante d'une de mes tentatives.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    WTF, faudra déjà que tu m'explique comment tu es arrivé à faire ça : fenetre.setDefaultCloseOperation(fenetre.DO_NOTHING_ON_CLOSE);
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Candidat au Club
    Citation Envoyé par bouye Voir le message
    WTF, faudra déjà que tu m'explique comment tu es arrivé à faire ça : fenetre.setDefaultCloseOperation(fenetre.DO_NOTHING_ON_CLOSE);
    J'ai juste essayé des solutions sur internet pour d'autres projets. Je savais très bien que ça ne marcherait pas, c'était surtout pour illustrer ce que je voulais faire au cas où mes propos soient un peu flou.

  4. #4
    Rédacteur/Modérateur

    Ok... du coup pour éviter que la fenêtre se ferme, il suffit de faire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent event) {
            event.consume();
        }
    });


    ce qui doit pouvoir être simplifié en stage.setOnCloseRequest(event -> event.consume()); ou même stage.setOnCloseRequest(WindowEvent::consume);

    En consommant l'événement, on empêche sa propagation aux gestionnaires de bas niveaux qui s'occupent de la fermeture de la fenêtre.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Candidat au Club
    Citation Envoyé par bouye Voir le message
    Ok... du coup pour éviter que la fenêtre se ferme, il suffit de faire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent event) {
            event.consume();
        }
    });


    ce qui doit pouvoir être simplifié en stage.setOnCloseRequest(event -> event.consume()); ou même stage.setOnCloseRequest(WindowEvent::.consume);

    En consommant l'événement, on empêche sa propagation aux gestionnaires de bas niveaux qui s'occupent de la fermeture de la fenêtre.
    Nickel ça marche parfaitement. Merci du coup de main.

    Cordialement

###raw>template_hook.ano_emploi###