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

AWT/Swing Java Discussion :

Communication entre deux formulaires liés


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut Communication entre deux formulaires liés
    Bonsoir à tous, quelqu'un pourrait-il me dire pourquoi je n'arrive pas à renseigner le champ txtCodeEnf du formulaire ActeNaissSuite par la valeur TxtCodeActe du formulaire "FormANaiss" de depuis lui?

    Code du formulaire FormANaiss

    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
    public final class FormANaiss extends javax.swing.JFrame {
      private javax.swing.JTextField TxtCodeActe;
      private ActeNaissSuite suite = new ActeNaissSuite(this); // instance du formulaire ActeNaissSuite
     
       public FormANaiss() {
           initComponents();
       }
     
     private void cmdSuiteActionPerformed(java.awt.event.ActionEvent evt) {                                         
             suite.setVisible(true);
                     suite.setTxtCodeEnf(getTxtCodeActe());/* je veux remplir le champ txtCodeEnf de ActeNaissSuite à partir de ce formulaire par le bouton suite,mais pas moyen.j'ai l'impression  qu'il ne sais pas communiqué avec ActeNaissSuite */     
        }     
     public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
     
                @Override
                public void run() {
                    new FormANaiss().setVisible(true);
                }
            });
        }        
     
    public String getTxtCodeActe() {
            return TxtCodeActe.getText().trim();
        }
    }
    code du formulaire ActeNaissSuite

    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
    public class ActeNaissSuite extends javax.swing.JFrame {
       private FormANaiss frmANaiss;// instance de FormANaiss
     private String txtCodeEnf;
     
    public ActeNaissSuite(FormANaiss frmANaiss) {
            this.frmANaiss = frmANaiss;
            initComponents();
    }
     private void CmdPcdtActionPerformed(java.awt.event.ActionEvent evt) {                                        
            // TODO add your handling code here:
             frmANaiss.setVisible(true);// Appel du formulaire FormANaiss
     
        }     
     
     public void setTxtCodeEnf (String txtCodeEnf) { // accesseur que j'utilise dans FormANaiss pour remplir champ txtCodeEnf
            this.txtCodeEnf = txtCodeEnf;
        }
     
    public static void main(String args[]) {
     
            java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    FormANaiss frmNaiss= new FormANaiss();
                    new ActeNaissSuite(frmNaiss).setVisible(true);
                }
            });
     
        }
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    ta méthode cmdSuiteActionPerformed(...) est bien appelée quelque part ?

    Tu testes bien par la classe FormANaiss ? Parce que par la classe ActeNaissSuite , tu as 2 instances de ActeNaissSuite (une créée par FormANaiss et une créée dans la méthode Main de ActeNaissSuite) : une seule des deux sera mise à jour dans cmdSuiteActionPerformed(..)...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut Communication entre deux formulaires liés
    Bonjour Joel.Drigo,j'ai pas très bien compris,voulez vous dire que mon programme crée deux instances de AcetNaissSuite ? Et c'est parce qu 'il y a deux instances que je n'arrive pas à affecter depuis le formulaire FormActeNaiss la valeur du champ txtCodeEnf dans le champ TxtCodeActe de ActeNaissSuite?

    Autrement comment dois-je procédé? l'idée était de pouvoir naviguer entre les deux au moyen des boutons. Du Formulaire "FormANaiss" le click sur le bouton "CmdSuite" appele le formulaire "ActeNaissSuite" et le bouton "CmdPcdt" du formulaire "ActeNaissSuite" affiche la même instance de "FormActeNaiss".Ce que fait déjà bien mon code, mais j'arrive pas en renseigner le champ TxtCodeActe en même temps que je le formulaire ActeNaissSuite appelle.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par coolanso Voir le message
    Bonjour Joel.Drigo,j'ai pas très bien compris,voulez vous dire que mon programme crée deux instances de AcetNaissSuite ? [

    Une est créée dans FormANaiss, en variable de classe, par le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     private ActeNaissSuite suite = new ActeNaissSuite(this); // instance du formulaire ActeNaissSuite
    Une autre est créée dans la méthode main de ActeNaissSuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void main(String args[]) {
     
            java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    FormANaiss frmNaiss= new FormANaiss(); // donc une première instance est créee dans FormANaiss
                    new ActeNaissSuite(frmNaiss).setVisible(true); // ici une seconde instance
                }
            });
     
        }
     
    }
    Citation Envoyé par coolanso Voir le message
    Et c'est parce qu 'il y a deux instances que je n'arrive pas à affecter depuis le formulaire FormActeNaiss la valeur du champ txtCodeEnf dans le champ TxtCodeActe de ActeNaissSuite?
    Tout dépend comment tu testes : si tu lances la méthode main de ActeNaissSuite : comme FormActeNaiss ne modifie la variable txtCodeEnf que de l'instance de FormActeNaiss sur laquelle elle a un lien, si tu regardes dans l'autre instance, tu pourras penser que çà ne fonctionne pas.

    Citation Envoyé par coolanso Voir le message

    Autrement comment dois-je procédé? l'idée était de pouvoir naviguer entre les deux au moyen des boutons. Du Formulaire "FormANaiss" le click sur le bouton "CmdSuite" appele le formulaire "ActeNaissSuite" et le bouton "CmdPcdt" du formulaire "ActeNaissSuite" affiche la même instance de "FormActeNaiss".Ce que fait déjà bien mon code, mais j'arrive pas en renseigner le champ TxtCodeActe en même temps que je le formulaire ActeNaissSuite appelle.
    Je dirais que c'est un peu se compliquer la vie que de faire 2 fenêtres qui s'alternent, mais bon, il suffit que chacune d'entre elle ait une référence sur l'autre, et ça peut le faire : c'est le cas quand tu démarres par la méthode main de FormActeNaiss : elle a une référence (suite) sur ActeNaissSuite et lui passe sa référence par le constructeur (le this de suite= ActeNaissSuite(this).

    Le plus simple étant de faire une seule fenêtre avec 2 JPanel, en en affichant qu'un seul des 2 à la fois (avec des boutons Suivant et Précédent, pour afficher l'un ou l'autre), éventuellement en s'inspirant de cet article (On peut trouver différents projets ou bibliothèquess de composants qui proposent des implémentations de wizards également).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut Communication entre deux formulaires liés
    je me demande si ce n'est pas la méthode setTxtCodeEnf () qui me joue des tours. Comment lui dire d'affecter la valeur de la Methode à mon JTextField?

    p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ublic class ActeNaissSuite extends javax.swing.JFrame {
       private FormANaiss frmANaiss;// instance de FormANaiss
     private String txtCodeEnf;
     
    public void setTxtCodeEnf (String txtCodeEnf) { // ici la méthode prend en paramétre uns String.
            this.txtCodeEnf = txtCodeEnf;
        }
     
    }
    dans FormANaiss

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public final class FormANaiss extends javax.swing.JFrame {
      private javax.swing.JTextField TxtCodeActe;
      private ActeNaissSuite suite = new ActeNaissSuite(this);
     
    private void cmdSuiteActionPerformed(java.awt.event.ActionEvent evt) {                                         
             suite.setVisible(true);
                     suite.setTxtCodeEnf(getTxtCodeActe());/*en faisant ainsi,je me demande bien comment la méthode setTxtCodeEnf() sait qu'il s'agit du champ TxtCodeEnf de ActeNaisssuite que je veux remplir ?*/     
        }   
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Quel JTextField ?

    De ce que je comprends, tu as un JTextField dans FormANaiss, et quand tu appelles cmdSuiteActionPerformed() ça lit la valeur dans ce JTextField et ça le transmets à la variable txtCodeEnf de ActeNaissSuite, par sa méthode setTxtCodeEnf : si tu as un JTextField dans ActeNaissSuite (que je ne vois pas dans le code que tu as posté), il ne sera effectivement pas modifié, vu que la méthode ne modifie qu'une variable de type String. Tu as un JTextField dans ActeNaissSuite, qui devrait recevoir la valeur saisie dans celui de FormANaiss ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. reprendre un enchainement de code entre deux formulaires.
    Par scully2501 dans le forum Access
    Réponses: 2
    Dernier message: 05/10/2005, 17h11
  2. Communication entre deux Executables ?
    Par QAYS dans le forum Langage
    Réponses: 8
    Dernier message: 11/05/2005, 15h41
  3. communication entre deux executables
    Par semenzato dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 23h19
  4. Communication entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 13
    Dernier message: 28/01/2005, 10h14
  5. Réponses: 5
    Dernier message: 25/03/2003, 20h43

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