Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Mvc] Reconnaître une Vue

    17 décembre 2014 à 22:11:43

    Bonjour à tous,

    J'ai un problème de structure avec le MVC. J'ai fais un pseudo-schéma pour être le plus clair possible.

    J'ai donc 2 Grid affiché à l'écran, lorsque un événement est détecte elles préviennent le controler qui préviens le model GameBoard qui lui contient les model des 2 Grid. Ma question est toute simple, comme je n'ai qu'un seul controler comment je sais de quel Grid provient l’événement? Je n'ai aucune façon de détecter si c'est la Grid 1 ou la Grid 2 sur laquelle un event à été detecté.

    Je vous remercie d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2014 à 22:53:09

      Bonjour.

      Pourrais-tu nous montrer comment déclares la méthode qui sera appelée lors d'un événement sur ton Grid ?

      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
        17 décembre 2014 à 23:06:59

        Salut,j'ai la méme remarque de Pinguet62 , au moins nous somme besoin de voir le code de cette méthode qui est chargée de détécter lévénement prevenant d'un Grid.
        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2014 à 0:03:17

          Ben a vrai dire il n'y a pas encore de code vu que je ne fais que réfléchir à la structure pour l'instant et essayer de respecter les règles MVC.

          Je dois pas être le premier à être confronter à ce problème. Si on à vue qui sont des type d'objet identique et que l'on a que un seul controler comment on différencie les deux objets? :o

          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2014 à 0:36:07

            Pour binder ton événement à un handler tu as plusieurs méhodes :

            Admettons ces 2 objets (désolé je ne connais pas trop Swing du coup je prend l'exemple d'un bouton)

            JButton button1;
            JButton button2;
            • Binder ton controller.
            public class Controller implements ActionListener {
                JButton button1;
                JButton button2;
            
                Test() {
                    button1.addActionListener(this);
                    button2.addActionListener(this);
                }
            
                @Override
                public void actionPerformed(ActionEvent event) {
                    Object source = event.getSource();
                    if (button1.equals(source))
                        System.out.println("Button 1");
                    else if (button2.equals(source))
                        System.out.println("Button 2");
                }
            }

            Je n'aime pas cette méthode, car non-maintenable : si tu ajoutes un bouton tu dois modifier la méthode commune aux objets qui n'ont pas forcément de lien entre eux...

            • Binder avec des classes lambda (voir les classes anonyme pour le vieux Java), voir les méthodes références!
            public class Test implements ActionListener {
                JButton button1;
                JButton button2;
            
                Test() {
                    button1.addActionListener(event -> System.out.println("Button 1"));
                    button2.addActionListener(event -> System.out.println("Button 2"));
                }
            }
            • Partager sur Facebook
            • Partager sur Twitter
            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
              18 décembre 2014 à 1:59:47

              Ok c'est effectivement une bonne idée. Après Cela implique que mon contrôler connaisse toutes les vues et éléments de cette vue. Si j'imbrique des vues dans les vues elles devront aussi être aussi enregistrés dans le contrôler. Ça va faire beaucoup non?
              • Partager sur Facebook
              • Partager sur Twitter
                18 décembre 2014 à 7:44:37

                Attention, en aucun cas tu nous explique que tu utilises Swing comme framework.

                Ce serait cool de commencer par là car on ne peut pas le deviner. Tu pourrais très bien faire du JSF, du JavaFX, du spring, du struts...

                • Partager sur Facebook
                • Partager sur Twitter
                  18 décembre 2014 à 9:59:37

                  max-om-93 a écrit:

                  Attention, en aucun cas tu nous explique que tu utilises Swing comme framework.

                  Ah oui effectivement.

                  Pour le MVC généralement le comportement est toujours le même.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                    18 décembre 2014 à 15:46:39

                    Je ne fais pas de Swing mais du Javafx mais ça n'a aucune importance je pose une question au niveau du fonctionnement du MVC. C'est le même fonctionnement avec les différentes bibliothèque.

                    Mais du coup si personne ne propose autre chose que la solution de Pinguet62, je vais me tourner vers ça même si je trouve que c'est extrémement lourd comme processus :/ C'est bizarre qu'il n'y aie aucune solution nulle part c'est un soucis qui à déjà dû être rencontré par pleins de dev..

                    Merci Pinguet62 pour ton aide ;)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 décembre 2014 à 16:02:11

                      matini a écrit:

                      Je ne fais pas de Swing mais du Javafx mais ça n'a aucune importance je pose une question au niveau du fonctionnement du MVC. C'est le même fonctionnement avec les différentes bibliothèque.


                      Je suis désolé mais non. Par exemple une bibliothèque MVC pour une application web n'aura pas du tout le même fonctionnement que du Swing ou du JavaFx. D'où ma demande de précision...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 décembre 2014 à 17:07:46

                        max-om-93 a écrit:

                        matini a écrit:

                        Je ne fais pas de Swing mais du Javafx mais ça n'a aucune importance je pose une question au niveau du fonctionnement du MVC. C'est le même fonctionnement avec les différentes bibliothèque.


                        Je suis désolé mais non. Par exemple une bibliothèque MVC pour une application web n'aura pas du tout le même fonctionnement que du Swing ou du JavaFx. D'où ma demande de précision...

                        Là je suis d'accord avec toi !
                        D'ailleurs je trouve que JSF se rapproche plus du MVVN que du MVC.

                        matini a écrit:

                        Je ne fais pas de Swing mais du Javafx mais ça n'a aucune importance je pose une question au niveau du fonctionnement du MVC. C'est le même fonctionnement avec les différentes bibliothèque.

                        Mais du coup si personne ne propose autre chose que la solution de Pinguet62, je vais me tourner vers ça même si je trouve que c'est extrémement lourd comme processus :/ C'est bizarre qu'il n'y aie aucune solution nulle part c'est un soucis qui à déjà dû être rencontré par pleins de dev..

                        Merci Pinguet62 pour ton aide ;)

                        Non ce n'est pas spécialement lourd. Tu seras dans tous les cas, quel que soit le framework, obligé de lier l'événement à l'handler.
                        Comment veux-tu faire autrement ?

                        En Swing, tu dois associer l'événement de ton objet à ton handler : button.addActionListener(event -> ...);
                        En JavaFX, soit dans l'objet de ta vue tu définies ta méthode du controlleur qui sera appelée, soit tu fais le lien dans le controller avec un setter.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)

                        [Mvc] Reconnaître une Vue

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown