Partage
  • Partager sur Facebook
  • Partager sur Twitter

listener et pattern MVC

Sujet résolu
    21 mars 2010 à 11:11:27

    Bonjour,

    Pour mon projet en JAVA je dois utiliser le pattern MVC, donc découpages en 3 packages model, view, controller.
    Mais j'ai un peu de mal à éffectuer des intéractions entre ceux-ci.

    Par exemple j'ai une classe dans le package view "FenetreX" qui contient notament un JTextField, et un JButton, je place un listener sur le JButton : btMonBouton.addActionListener(new EventsX(this));

    Dans mon package controller j'ai une classe "EventsX" qui doit gèrer les évènement de la classe "FenetreX", cette classe contient les méthodes d'ActionListener ainsi qu'une variable d'instance de ma classe "FenetreX".

    private FenetreX maFenX;

    //Constructeur.
    public EventsX(FenetreX pMaFenX) {
    this.maFenX=pMaFenX;
    }


    Mon problème comment éffectuer un getText() sur mon JTextField sachant que je n'ais pas accès à cette méthode.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 mars 2010 à 11:29:25

      Salut,

      Le fait que tu n'aies pas accès à cette méthode fait tout l'intérêt du MVC. Ainsi tu t'obliges à respecter cette séparation. En fait tu peux te contenter d'envoyer un évènement à ta fenêtre pour lui dire que ton bouton a été cliqué. Ensuite libre à cette fenêtre d'y réagir de la manière que tu aura choisie.

      ++
      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2010 à 11:41:42

        En faite j'arrive a modifier le comportement de la fenêtre (passage en mode read only lors d'une consultation etc...).
        Mais j'aurais besoin de vérifier la valeur de ma zone texte dans mon controller, comment pourrais-je récupèrer ce String ?

        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2010 à 12:06:03

          En utilisant le pattern Observer, intrinsèquement lié à MVC.
          Comme dit BZ, tu envoies un évènement à ton contrôleur pour vérifier la saisie.

          Normalement tu ne devrais pas avoir d'instance de FenetreX dans EventsX pour respecter MVC. Tu peux aller voir le tuto de cysboy sur MVC pour en comprendre le fonctionnement.
          • Partager sur Facebook
          • Partager sur Twitter
            21 mars 2010 à 12:43:53

            A la base je m'étais basé sur ce tutorial : http://leepoint.net/notes-java/GUI/structure/40mvc.html

            qui n'utilisait pas le pattern Observer.

            Merci à vous je vais faire un tour du côté du tutorial de cysboy.
            • Partager sur Facebook
            • Partager sur Twitter
              21 mars 2010 à 12:58:13

              Oui pourquoi pas. Si tu lies toutes les classes entre elles, tu pourras accéder à tout ce qui est public n'importe où. Ca pose quelques soucis au niveau de la maintenance par exemple, mais si ton programme n'est pas trop gros tu ne devrais pas trop être géné.
              • Partager sur Facebook
              • Partager sur Twitter
                21 mars 2010 à 18:23:12

                Avec la méthode de se site j'avais déja des soucis car il faut un getter à chaque JTextField par exemple, ce qui est trop gros dans mon cas(beaucoup de JTextField et autres).
                • Partager sur Facebook
                • Partager sur Twitter
                  21 mars 2010 à 20:22:57

                  Pas besoin de getter à priori !? Et même si c'est le cas, un seul getter (bien pensé) suffit, à priori.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 mars 2010 à 20:43:12

                    La je suis un peu perdu, sans utiliser les patterns Oberser et Strategy donc comme sur le site : http://leepoint.net/notes-java/GUI/structure/40mvc.html, et sans utiliser un getter monJTextField.getText dans ma vue, il ya moyen de récupèrer dans ma classe controleur le contenu de ce champ ???
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      21 mars 2010 à 20:53:15

                      Salut,

                      Oui. Il suffit que l'évènement que va recevoir ton contrôleur contienne cette valeur. Si tu commences, dans ton contrôler à accéder à des composants de ta vue (qui plus est des composants graphiques) autant laisser tomber l'idée du MVC puisque tu te retrouvera avec tout un tas de dépendances que l'on cherche justement à éviter en mettant en place cette architecture.

                      ++
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 mars 2010 à 10:54:11

                        Ok je vois, si je veux bien faire les choses il faut mieux utiliser les autres patterns avec le mvc.
                        Merci à vous.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 mars 2010 à 18:39:42

                          Beh je ne sais pas quelle est la "vraie" définition de MVC, mais je n'en ai jamais vu sans Observer.
                          Le site que tu donnes montre à priori un MVC puisqu'il y'a bien 3 packages distincts, mais alors l'intérêt est assez faible je trouve si tu lies fortement les classes. Les responsabilités sont bien séparées donc à priori le code n'est pas mauvais non plus, mais la forte dépendance est véritablement un problème lors de la maintenance du programme.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          listener et pattern MVC

                          × 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