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

Interfaces Graphiques en Java Discussion :

JCheckBox: Récupérer depuis une autre classe si JCheckBox cochée ?


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut JCheckBox: Récupérer depuis une autre classe si JCheckBox cochée ?
    Bonjour, alors j'ai un gros soucis avec une simple JCheckBox !

    Impossible de récupérer si elle est cochée ou pas depuis une autre classe.

    J'utilise pourtant isSelected mais ça ne fonctionne pas.


    Voici la classe Model depuis laquelle j'essaye de savoir si la CheckBox de la classe ViewTissusOuvertRoute est cochée ou 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
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    public class Model 
    {
     
     
    	public void calcul_tor(ViewTissusOuvertRoute tor)
    	{
     
     
    		/**influence de la route 1 sur les 4 façades de la maison**/
     
    if(tor.getTor_jcb_1().isSelected()) // si la route 1 existe (voir schéma)
    		{
    			System.out.println("route1"); // NE MARCHE PAS DONC ON NE RENTRE PAS DANS LA BOUCLE
     
    			String dist1 ;
    			int d,i=0,c;
     
    	    	int dist_cat[][]  = {{45,45,44,43,42,41,40,39,38,37,36,35,34,33,32}, {42,42,41,40,39,38,37,36,35,34,33,32,31,30,30}, {38,38,37,36,35,34,33,32,31,30,30,30,30,30,30},
    					             {35,33,32,31,30,30,30,30,30,30,30,30,30,30,30}, {30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}, {30,30,30,30,30,30,30,30,30,30,30,30,30,30,30},
    					             {30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}};
     
    	       	dist1 = tor.configTor.jtf_dist1.getText();
    	   	    d = Integer.valueOf(dist1).intValue();
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Prévois dans ta classe contenant la checkBox une méthode qui renvoie son statut.

    Puis fais en sorte que ta seconde classe contienne une référence sur la première, comme cela tu n'auras qu'à appeler la méthode de la première classe pour savoir si ta checkbox est cochée.

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Slt, comment vas tu?

    En fait je travaille en MVC (Model View Controller).
    J'ai une classe Event qui gère tous les évènements des boutons, menus...
    Seulement pour les checkBox je suis embêté.

    J'ai une classe ViewTissusOuvertRoute (View, JFrame) qui contient une checkbox et des boutons.

    Ces boutons sont reliés à l'Event.

    Par exemple pour le bouton 1 j'aurai le code suivant dans ma View :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    button1.addActionListener(new Event(controller));
    button1.setActionCommand("TORFaceLat1");
    et j'ai alors dans la classe Event:
    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 class Event implements ActionListener
    {  
    		private Controller cC;  
     
     
     
    	    public Event(Controller controller)  // le cC est le this de la classe ConvertisseurController instanciée dans le main. 
    	    {  
    	        cC = controller;  // le _cC est tjs la classe ConvertisseurControleur instanciée dans le main
    	    }  
     
     
    	    public void actionPerformed(ActionEvent e)  
    	    {              
     
     
    	       if (e.getActionCommand().equals("TORFaceLat1"))
    	       {
    	    	   cC.set_flag_position(1);
    	    	   cC.set_flag_RetourViewElements(1);
    	    	   cC.goToElementsFaceLat1(cC.get_flag_GoToElements());
    	       }
     
    etc....

    Revenons à présent à la classe ViewTissusOuvertRoute, et étudions ma CheckBox.

    Ne sachant pas comment gérer des évènement à l'Event avec une CheckBox, j'ai créé des stateListener dans ma classe ViewTissusOuverRoute:


    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
     
     
            private int flag_fusion=0;
     
            public int getTOR_flag_fusion()
    	{
    		return flag_fusion;
    	}
     
               jcb_fusion = new JCheckBox("fusion");
               jcb_fusion.addActionListener(new StateListener());
    	   jcb_fusion.setSelected(false);
     
     
     
     
     
    	   class StateListener implements ActionListener
    	   {
     
    		   public void actionPerformed(ActionEvent e) 
               {
     
    			   if( (((JCheckBox)e.getSource()).getText()=="fusion") &&   (((JCheckBox)e.getSource()).isSelected()==true)	)	
    			   {
    				   flag_fusion=1;
    			   }
    			   else if( (((JCheckBox)e.getSource()).getText()=="fusion") &&   (((JCheckBox)e.getSource()).isSelected()==false)	)	
    			   {
    				   flag_fusion=0;
    			   }


    Voilà, et moi ce que je voudrais, c'est récupérer cette valeur du flag_fusion depuis l'Event. Car selon cette valeur, le bouton n'aura pas la même action.

    J'ai donc penser à faire ça dans l'Event:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
      if ((e.getActionCommand().equals("TORFaceLat1"))&&(tor.getTOR_flag_fusion()==0))
    	       {
    	    	   cC.set_flag_position(1);
    	    	   cC.set_flag_RetourViewElements(1);
    	    	   cC.goToElementsFaceLat1(cC.get_flag_GoToElements());
    	       }


    MAIS ça ne marche pas !

    Que faire ?

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Personne n'a une idée?

    ?

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Voilà j'ai réussi,

    enfin j'ai fait autrement,

    il suffisait tout simplement, dans la classe View où se trouve les boutons et la check box, de changer la signature des boutons suivant la valeur cochée ou pas cochée de la checkBox...


    MON PROJET EST PROGRAMME EN MVC (Model View Controller)


    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
     
     
    jcb_fusion = new JCheckBox("fusion");
    		jcb_fusion.addActionListener(new StateListener());
    		jcb_fusion.setSelected(false);
     
     class StateListener implements ActionListener
    	   {
     
    		   public void actionPerformed(ActionEvent e) 
               {
     
    			   if( (((JCheckBox)e.getSource()).getText()=="fusion") &&   (((JCheckBox)e.getSource()).isSelected()==true)	)	
    			   {
    				   flag_fusion=1;
    				   button1.setActionCommand("");
    			       button2.setActionCommand("FaceLat1Lat2");
    			       button3.setActionCommand("");
    			       button4.setActionCommand("FaceArrLat1");
    			       button5.setActionCommand("neutre");
    			       button6.setActionCommand("FaceArrLat2");
    			       button7.setActionCommand("");
    			       button8.setActionCommand("ArrLat1Lat2");
    			       button9.setActionCommand("");
    			   }
    			   else if( (((JCheckBox)e.getSource()).getText()=="fusion") &&   (((JCheckBox)e.getSource()).isSelected()==false)	)	
    			   {
    				   flag_fusion=0;
    				   button1.setActionCommand("FaceLat1");
    				   button2.setActionCommand("Face");
    				   button3.setActionCommand("FaceLat2");
    		           button4.setActionCommand("Lat1");
    				   button5.setActionCommand("neutre");
    			       button6.setActionCommand("Lat2");
    				   button7.setActionCommand("ArrLat1");
    				   button8.setActionCommand("Arr");
    				   button9.setActionCommand("ArrLat2");
    			   }




    Tous les traitements des boutons se font dans la classe Event:

    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 class Event implements ActionListener
    {  
    		private Controller cC;  
    		private ViewTissusOuvertRoute tor;
     
     
     
    	    public Event(Controller controller)  // le cC est le this de la classe ConvertisseurController instanciée dans le main. 
    	    {  
    	        cC = controller;  // le cC est tjs la classe ConvertisseurControleur instanciée dans le main
    	    }  
     
     
    	    public void actionPerformed(ActionEvent e)  
    	    {       
     if (e.getActionCommand().equals("FaceLat1"))
    	       {
    	    	   cC.goToElementsFaceLat1();
    	       }
                }
    }



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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2007, 16h31
  2. GC appel depuis une autre classe
    Par dark2 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/06/2006, 05h53
  3. JProgressbar qui avance depuis une autre classe....
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/02/2006, 20h04
  4. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50
  5. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

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