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 :

Problème constructeur JDialog


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut Problème constructeur JDialog
    Bonjour chers amis

    je rappele que je débute en JAVA, et après avoir passé quelque temps a chercher, je me suis dit que peut être quelqu'un a deja vécu ce cas

    j'ai une fenetre mêre, a partir d'un click d'un menu, je lance une fenetre fille

    Je veux faire une JDialog modale avec titre "tutu" jusqu'a la pas de souci.

    Donc, je matte la javadoc, je vois qu'il y a un constructeur qui prends en paramètres la frame owner, le titre, et le boolean qui dit si je veux qu'elle soit modale ou non

    je m'éxécute enfin je construis ça (pas bien complexe au départ)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Modif_Sup_Experience delete_exp = new Modif_Sup_Experience(Form_Mere,"tutu",true);
    et au moment de compiler (c'est d'ailleurs un moment complexe) et la il me sort un double message d'érreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Erreur 669: cannot find symbol
    symbol  : variable Form_Mere
    location: class cristal.Form_Mere
            Modif_Sup_Experience delete_exp = new Modif_Sup_Experience(Form_Mere,"tutu",true);
    Erreur 669: internal error; cannot instantiate cristal.Modif_Sup_Experience.<init> at cristal.Modif_Sup_Experience to ()
            Modif_Sup_Experience delete_exp = new Modif_Sup_Experience(Form_Mere,"tutu",true);

    A titre informatif Form_Mere est une interface graphique de type JFrame
    j'ai instancié un objet Form_Mere dans une classe main qui s'appele fenetremere :p

    Dans mon constructeur j'ai essayé les 2 à savoir la classe de base, et la classe instanciée (pour voir) et la résultat est toujours le même : Erreur

    à votre bon coeur méssieurs dames...

  2. #2
    Membre actif Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Points : 223
    Points
    223
    Par défaut
    Je ne connais pas du tout cette class, mais donnes tout ton code pour voir

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Le constructeur attend une instance et pas une classe.

    Tu dois lui passer "fenetremere" et non pas "Form_Mere"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Au passage, si tu débutes en Java, une des choses importante c'est les conventions de nommage (désolé mais ça me donne des boutons sinon).
    Voir http://java.sun.com/docs/codeconv/ht...ions.doc8.html

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Remplace "Form_Mere" par "this"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    oui je te rassure moi aussi je suis à cheval pour les conventions de nommage, j'ai déjà eu a reprendre du code dans d'autres langages, et quand les conventions ne sont pas respectées ça me donne aussi des boutons

    pour ce cas la variable a un nom en mousse (ce qui est pire qu'un nom en bois) car j'ai écrit le message un peu vite, mais dans mon code elle s'appele bien fenetreMere :p

    je vais continuer a tester, mais il me semble qu'un de mes premiers réflexes a été de mettre this, mais ça a pas trop marché

    je continue à tester, en cas d'échec je mettrai un gros bout de code, mais j'ai pas voulu vous ennuyer avec de la lecture pour le moment

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Les classes nommées avec des underscore sont celles correspondant a des GUI (voila pourquoi le nom barbare) afin de bien les différencier avec les classes autres que j'utilise, ou vais utiliser

    Mais une fois que j'aurai toruvé la solution au problème, je promets de tout renomer afin d'avoir un truc propre

    Bon après quelques test en vain... je vais rédiger mon souci plus proprement :

    La méthodes présentée correspond à un evenement de click sur le menu d'ouverture d'une autre fenêtre :

    Avec ça , ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {                                          
            Modif_Sup_Experience deleteExp = new Modif_Sup_Experience(this,"tutu",true);
            deleteExp.ModeOuverture = "delete";
            //deleteExp.setTitle("Suppression d'expériences");
            deleteExp.setVisible(true);
            deleteExp.setLocationRelativeTo(deleteExp.getParent());
        }
    Voici le message d'erreur associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\Documents and Settings\fs214824\Mes documents\CRISTAL\Code\CRISTAL\src\cristal\Form_Mere.java:669: cannot find symbol
    et avec ça, ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            Modif_Sup_Experience deleteExp = new Modif_Sup_Experience();
            deleteExp.ModeOuverture = "delete";
            //deleteExp.setTitle("Suppression d'expériences");
            deleteExp.setVisible(true);
            deleteExp.setLocationRelativeTo(deleteExp.getParent());
        }
    Mais ^^ ça fait pas ce que je veux, à savoir :

    Je veux lui dire crée moi une nouvelle form et je suis ton père (enfin ta mère mais ça fesait plus StarWars... )

    La seule différence c'est le constructeur (this,"tutu",true) et je ne rêve pas dans la javadoc ce constructeur existe bien

    En gros si je vire les paramètres du constructeur, j'ai bien ma nouvelle form qui se lance, qui se centre sur l'écran, et tout...

    mais ce que je voulais en utilisant ce constructeur, c'est directement lui donner son titre, et lui dire qu'elle est modale

  8. #8
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Bon va falloir que tu postes plus de code.
    Pour ta première erreur, je maintient que c'est parceque tu n'as pas mis "this" ( référence à l'instance de fenêtre courante, erreur prouvé par la partie location de la trace erreur ) mais le nom de ta classe fenêtre.
    Pour la deuxième erreur, j'aimerais bien vois tous les constructeurs de ta classe Modif_Sup_Experience

    Bon je viens de voir que tu as postés entre temps donc :
    il faut que tu crées un constructeur qui prend les paramètres que tu veux lui passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Modif_Sup_Experience(Frame owner,String title,boolean modal){
       super(owner,title,modal);
       ...
    }
    pour info, le super(...) fais appel aux constructeurs de la classe mère. Si tu n'y fait pas appel, alors ce sera comme dans ton code précédent le constructeur par défaut () qui sera appelé. --> une petite révision des notions d'héritage ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Erreur de boulet je présume...

    j'avais laissé le constructeur par défaut

    en méttant l'autre constructeur surchargé ça marche beaucoup mieux...

    je te remercie platement

    j'en prends quand même un coup dans mon estime personnelle... oublier ça, moi qui lutte activement pour la POO...

    m'enfin bon j'espère que ça me servira de leçon

    Bilan pour les autres personnes qui auront a faire la même chose et qui tomberont sur ce post:

    Lors de la création de la classe ne pas oublier de prévoir tous les types de constructeurs nécéssaires, et non pas seulement laisser comme un g***d celui que NB m'a gentillement mis

    au passage... j'ai renommé toutes mes classes bien proprement selon les conventions de nommage

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/08/2007, 11h42
  2. [débutant]2 petits problèmes avec JDialog
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 18/02/2007, 19h46
  3. [Débutante] problème avec JDialog
    Par maya dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 02/12/2006, 04h44
  4. [Débutant]Problème de JDialog
    Par seb_le_noob dans le forum Langage
    Réponses: 1
    Dernier message: 15/06/2006, 00h38
  5. problème constructeur + héritage
    Par BOLARD dans le forum C++
    Réponses: 10
    Dernier message: 13/04/2006, 08h11

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