IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Agents de placement/Fenêtres Java Discussion :

[JDialog] Problème avec l'aspect modal


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 31
    Par défaut [JDialog] Problème avec l'aspect modal
    Bonjour,

    J'ai un problème avec un JDialog modal qui n'empêche pas l'execution du code situé après son affichage.

    Ci dessous, la methode qui affiche ce popup et retourne le bouton appuyé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public static int showConfirmationPopup(
     final String message,
     final Container parent) {
     
       final JDialog dialog = new JDialog (getWindowOf(parent));
       dialog.setUndecorated(true);
       dialog.setModal(true);
       dialog.setPreferredSize(new Dimension(400, 300));
     
       final ConfirmationPopupPanel panel = new ConfirmationPopupPanel();
       panel.setMsg(message);
     
       panel.addActionOnYesButton(new AbstractAction("YES_ACTION") {
          public void actionPerformed(ActionEvent e) {
             panel.setReleasedButton(JOptionPane.YES_OPTION);
             dialog.setVisible(false);
          }
       });
       panel.addActionOnNoButton(new AbstractAction("NO_ACTION") {
          public void actionPerformed(ActionEvent e) {
             panel.setReleasedButton(JOptionPane.NO_OPTION);
             dialog.setVisible(false);
          }
       });
     
       dialog.getContentPane().add(panel);
       dialog.pack();
       dialog.setVisible(true);
     
       return panel.getReleasedButton();
    }
    Lors du premier appel à cette methode, tout se passe bien, le return n'est effectué qu'une fois la popup de confirmation fermée par l'appui sur l'un ou l'autre des deux boutons.
    Par contre lors des appels suivant, le 'setVisible(true)' n'est plus bloquant et la methode retourne directement la valeur par defaut de getReleasedButton alors que la popup est toujours affichée (elle est pourtant bien modale au niveau IHM).

    Avez vous des sugestions ?

  2. #2
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bizarre...
    Je te conseille de séparer ta création du JDialog et son affichage. Actuellement, tu créer un nouveau JDialog à chaque fois, de plus en final. Il est possible que l'adresse mémoire soit la même cependant et donc que getReleasedButton soit déjà initialisé !
    showConfirmationPopup ne devrait qu'afficher la JDialog, créée elle-même dans ton constructeur et n'ayant donc qu'une seule instance.

Discussions similaires

  1. Problème avec les fenêtres modales
    Par satokun dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 27/06/2015, 10h59
  2. Réponses: 1
    Dernier message: 12/02/2015, 14h04
  3. problème avec des forms Modals
    Par comodin dans le forum C++Builder
    Réponses: 0
    Dernier message: 13/11/2014, 13h07
  4. Thread appelé par un JDialog, problème avec bouton
    Par Marc_3 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 21/01/2013, 17h42
  5. problème avec l'aspect d'un histogramme
    Par jihad dans le forum VB.NET
    Réponses: 17
    Dernier message: 17/04/2012, 08h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo