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

Langage Java Discussion :

Communication entre 3 classes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut Communication entre 3 classes
    Bonjour,

    j'ai 3 classes
    - clsSymConfig : un model qui prendra les info
    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
     
    public class clsSymConfig {
     
    	private String[] tblNodeGroup;
    	private String[] tblNodeGroupLink;
    	private String[] tblNode;
     
    	private String[] tblChannel;
     
    	private String[] tblTrigger;
     
    	private String[] tblRouter;
     
    	private String[] tblTriRout;
     
    	public clsSymConfig(){
     
    		tblNodeGroup = new String[2];
    		tblNodeGroupLink = new String[3];
    		tblNode = new String[3];
     
    		tblChannel = new String[5];
     
    		tblTrigger = new String[5];
     
    		tblRouter = new String[7];
     
    		tblTriRout = new String[5];
    	}
    }

    - lstBtnAcceuil : un listener qui permettra d’exécuter des actions (ouvrir des fenêtre en fait) en fonctions des boutons qu'on va clicquer.
    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
     
    public class lstBtnAcceuil implements ActionListener{
     
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
     
    		switch (arg0.getActionCommand()){
     
    			case "btnNodes" :  new frmNodes();
    								break;
     
    			case "btnChannels" : new frmChannels();
    								break;
     
    			case "btnTriggers" : new Triggers();
    								break;
     
    			case "btnRouters" : new Routers();
    								break;
     
    			case "btnTriRout" : new TriRout();
    								break;
     
    		}
     
    	}
    }
    - frmSymMain la fenetre principal
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    public class viewSymMain extends JFrame {
     
    	private JPanel panel;
    	private JButton btnNodes;
    	private JButton btnChannels;
    	private JButton btnTriggers;
    	private JButton btnRouters;
    	private JButton btnTriRout;
    	private clsSymConfig SymConfig;
            private lstBtnAcceuil lstBtn;
     
     
    	public frmSymMain() {
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setTitle("Acceuil :: Sym Config");
    		getContentPane().setLayout(null);
     
     
    		panel = new JPanel();
    		panel.setBounds(24, 107, 636, 339);
    		getContentPane().add(panel);
    		panel.setLayout(null);
     
                    SymConfig = new clsSymConfig(); 
                    lstBtn = new lstBtnAcceuil();
     
    		btnNodes = new JButton("Nodes");
    		btnNodes.setBounds(238, 129, 145, 97);
                    btnNodes.addActionListener(lstBtn);
    		panel.add(btnNodes);
     
    		btnChannels = new JButton("Channels");
    		btnChannels.setBounds(37, 22, 145, 97);
                    btnChannels.addActionListener(lstBtn);
    		panel.add(btnChannels);
     
    		btnTriggers = new JButton("triggers");
    		btnTriggers.setBounds(452, 22, 145, 97);
                    btnTriggers.addActionListener(lstBtn);
    		panel.add(btnTriggers);
     
    		btnRouters = new JButton("Routers");
    		btnRouters.setBounds(37, 231, 145, 97);
                    btnRouters.addActionListener(lstBtn);
    		panel.add(btnRouters);
     
    		btnTriRout = new JButton("Trigger Router Link");
    		btnTriRout.setBounds(452, 231, 145, 97);
                    btnTriRout.addActionListener(lstBtn); 
    		panel.add(btnTriRout);
     
     
     
    	}
    }

    Voila ce que je faire : Lorsqu'on lance frmSymMain, on choisi un bouton, il récupère le SymConfig qu'il va passer en paramètre au formulaire qui va être lancé dans lstBtnAcceuil.

    Aussi il faudrait que lorsqu'on ferme le formulaire correspondant au bouton cliqué, que celui-ci renvoi la valeur de son "SymConfig" afin de mettre a jour le SymConfig qui se trouve dans frmSymMain.

    Je n'arrive pas à le faire, notamment je bloque sur 2 choses
    - comment passer un objet au listener (lstBtnAcceuil),
    - comment récupérer les valeurs des formulaires ouvert, et faire en sorte que que le listener (lstBtnAcceuil) les renvoient au formulaire main (frmSymMain).


    J’espère avoir été suffisamment clair.
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par sovo Voir le message
    - comment passer un objet au listener (lstBtnAcceuil),
    Avec un setter, ou avec son constructeur, comme pour les autres classes
    - comment récupérer les valeurs des formulaires ouvert, et faire en sorte que que le listener (lstBtnAcceuil) les renvoient au formulaire main (frmSymMain).
    Pas possible, le listener a fini son boulot bien avant que la nouvelle fenêtre soit visible pour l'utilisateur. C'est à ton formulaire, quand on clique sur son bouton, de faire le transfert lui même. Par exemple en appelant un setter sur ta fenetre principale.

  3. #3
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Avec un setter, ou avec son constructeur, comme pour les autres classes
    j'ai pensé a cette solution, mais le problème c'est que le listener est ajouter au bouton au moment de ca création. pourtant on peut l'appeler bien apres, alors est ce que le Symconfig (qui est la valeur qui sera passé) sera celle qui est la plus a jour, ou celle au moment du ".AddActionListener" ??


    Citation Envoyé par tchize_ Voir le message
    Pas possible, le listener a fini son boulot bien avant que la nouvelle fenêtre soit visible pour l'utilisateur. C'est à ton formulaire, quand on clique sur son bouton, de faire le transfert lui même. Par exemple en appelant un setter sur ta fenetre principale.
    hummm donc il faudrait avoir acces au formulaire principal depuis les formulaires, ouvert par les boutons, est ce que c'est possible ?? car si on passe en paramètre, alors on aura une référence, et non celle qui est le formulaire qui est ouvert.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par sovo Voir le message
    j'ai pensé a cette solution, mais le problème c'est que le listener est ajouter au bouton au moment de ca création. pourtant on peut l'appeler bien apres, alors est ce que le Symconfig (qui est la valeur qui sera passé) sera celle qui est la plus a jour, ou celle au moment du ".AddActionListener" ??
    Ce sera l'intance existante au moment de la création. Si l'intance peux être changée dans le temps, passe en paramètre du constructeur la fenêtre principale et crée un getSymConfig dessus.


    hummm donc il faudrait avoir acces au formulaire principal depuis les formulaires, ouvert par les boutons, est ce que c'est possible ??
    Ben oui. Ton listener peux très bien passer au autre formulaire l'instance du formulaire principal.

  5. #5
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    Apres quelques tests, je me rends compte que ca resoud effectivement mon Problème.

    Merci tchize_

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

Discussions similaires

  1. problème de communication entre mes classes
    Par emiliekun dans le forum ActionScript 3
    Réponses: 13
    Dernier message: 19/08/2009, 14h10
  2. communication entre les classes
    Par sara_qt dans le forum Qt
    Réponses: 0
    Dernier message: 11/04/2009, 20h11
  3. Communication entre une classe et un thread
    Par cs_ntd dans le forum C#
    Réponses: 2
    Dernier message: 24/10/2008, 10h49
  4. Communication entre les classes
    Par jagboys dans le forum MFC
    Réponses: 6
    Dernier message: 20/06/2006, 06h32
  5. Réponses: 3
    Dernier message: 22/11/2005, 11h12

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