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 modal..


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut JDialog modal..
    Je construis une Jdialog modal pour saisir du texte et quand je ferme cette fenetre par un dispose,ma JFrame qui a appelée cette JDialog ne recupere pas la main..J'aimerai savoir pourquoi?Merci d'avance..

  2. #2
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Ben là comme ça sans bout de code ni la moindre idée de ton contexte de fenêtres c'est pas évident de se faire une idée...

    - Docteur j'ai mal la, qu'est ce que c'est ?
    - Ben écoutez venez au cabinet parce que par téléphone j'ai du mal à voir où c'est "là" !!!

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Dans ma classe Dial qui étend JDialogue je fais appel auconstructeur de JDialog
    super(vue,"Meilleurs Score",true);/*vue est ma JFRame qui appelle*/

    Dans ma fenetre Dial j'ai un JTextField editable pour demander le nom de l'utilisteur,j'ai aussi fais un
    setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

    Lorsque l'utilisateur appuie sur OK (JBouton ajouté) je fais les appels a dispose();

    Apres ma fenetre Dial n'est plus affichée (logique.. 8) )mais ma JFrame vue est toujours bloquée..Voila j'espere que ca va mieux..Demande moi si tu veux que je te mettes plus de codes..Merci!!

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Dial fenetre = new Dial(model,Vue.this); /*Vue étend JFrame*/

    Cette instanciation est effectuée dans une méthode update apres avoir aouté un observer au model.Jespere que tu comprends tjs..(cest pour ca que je mets Vue.this)

    Le constructeur de ma Dial est :
    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
     
    class Dial extends JDialog  implements ActionListener 
    {
     
        public Dial(Simulateur model,Vue vue)
        {   
            // Appel du constructeur de la classe JDialog
            super(vue,"Meilleurs Score",true);
            setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
            setLocationRelativeTo(vue);  
            //positionnement de mes differents bouton et JTextField
           pack();
           show();
         }
     
          public void actionPerformed(ActionEvent e)
        {
                dispose();
         }
    Je n'ai qun seul bouton..

    Voila un peu de code j'espere que ca te sera suffisant pour m'aider sinon je peux ten donner plus mais ca risque de faire lourd!!

  5. #5
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Alors j'ai une solution détournée pour toi qui va nous éviter bien des ennuis. Je t'annonce que tu t'es sûrement cassé le cul pour rien à faire ta propre JDialog... désolé...
    Il y a une classe utilitaire que trop peu de monde utilise et qui s'appelle JOptionPane. Ca te permet d'afficher tout un tas de boîtes de dialogues modales simples genre messages d'erreur ou comme ici, invite utilisateur...

    Est-ce que cet appel ne te suffirait pas par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String userName = JOptionPane.showInternalInputDialog(vue.getContentPane(),
    "Votre nom : ",
    "Identification",
    JOptionPane.QUESTION_MESSAGE);
    Au passage, un petit lien vers le tutoriel...

    Si ça ne te suffit pas comme boite de dialogue, essaie de remplacer vue par vue.getContentPane() dans ton appel au constructeur de JDialog (en Anglais c'est ce qu'on appelle une rule of thumb : j'ai jamais vraiment compris pourquoi ça marchait comme ça et pas autrement mais ça marche lol)

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Je sais qu'elle existe cette classe car j'utilise des JOPtionPane pour demander confirmation.En fait j'ai fais une JDialog pour permettre a l'utilisateur de ne pouvoir appuyer que sur entree pour fermer cette fenetre ce qui nest pas possible pour une JOptionPane et jai aussi utiliser une JDialog pour ne pas lui permettre de rentrer une chaine vide ou une chaine trop longue..Tu llavais surement compris vu les noms cette affichage sert a demander le nom de l'utilisateur pour sauvegarder son score donc je ne veux ni un nom vide ni un nom trop long si tu as une autre solution qui m'offre les memes possibilités je suis preneur!!
    Merci d'avance

  7. #7
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Autant pour moi... Et en faisant une boucle qui réaffiche la boîte de dialogue tant que toutes les conditions ne sont pas réunies ça ne marche pas ?

    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
     
    String userName = "";
    boolean erreut = false;
    do{
    userName = JOptionPane.showInternalInputDialog(vue.getContentPane(),
    "Votre nom : ",
    "Identification",
    JOptionPane.QUESTION_MESSAGE);
    erreur = userName == null || userName.length() == 0 || userName.length > MAX_LENGTH;
    if(erreur){
      JOptionPane.showInternalMessageDialog(vue.getContentPane(),
      "Attention. Votre nom est soit trop court (0) soit trop long (>" + MAX_LENGTH+")",
      "Problème d'identification", 
      JOptionPane.WARNING_MESSAGE);
      }
    }
    while(erreur);
    Par contre pour le coup de la boite qui ne se ferme que sur Entrée, je ne vois pas trop l'intérêt en fait. Surtout qu'avec la méthode que je te suggère, si l'utilisateur utilise annuler ou le ch'tit bouton en haut à droite, la méthode showInternalInputDialog() retourne null et donc on boucle.

    Sinon tu as essayé simplement en remplaçant vue par vue.getContentPane() dans ton implémentation de JDialog ?

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    J'ai essayé avec getContentPane mais ca ne marche pas car getContentPane ne renvoit pas une Frame or le constructeur de Jdialog prend une Frame en premier argument..Merci de ton aide..

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    je vais essayer ca tout de suite...

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Je voudrais te dire un grand merci!!!Ta méthode marche et en plus utilise bcp moins de codes et elle est plus conviviale a utiliser..Encore Merci!!
    A bientot!!

  11. #11
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Y'a pas de quoi... ça fait plaisir

    Bon courage @+++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JDialog modal sur un autre JDialog
    Par delma dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/10/2006, 14h53
  2. Blocage d'une JFrame cree par un JDialog modal
    Par mobi38 dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 06/09/2006, 14h54
  3. JDialog modal et event sur JFrame
    Par roberto1 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 19/07/2006, 13h20
  4. [NetBeans RCP] creer JDialog modale
    Par le y@m's dans le forum NetBeans
    Réponses: 6
    Dernier message: 26/04/2006, 23h28
  5. [JDialog] Modal or not modal ?
    Par GLDavid dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/01/2006, 14h19

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