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

 Java Discussion :

[Débutant] Création de JPanel, Observable/Observeur


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 35
    Par défaut [Débutant] Création de JPanel, Observable/Observeur
    Bonjour,

    Je suis débutant en Java (surtout sur la partie IHM) et j'ai du mal à utiliser pattern observable/observer.

    Voilà mon problème:
    Mon IHM est tous le temps en train de créer de nouvelle fenêtre à l'appui sur des boutons. Pour simplifier, on dit qu'il en créer une (fenêtre F= new fenêtre()).
    Je veux qu’elle soit observable, car certain élément seront modifier dans cette fenêtre.
    Mais comment faire en sorte que cette fenêtre connaisse le contrôleur. (addobservable()).

    Au début j'ai pensé mettre en paramètre le contrôleur. Mais ce n’est pas très pratique.

    Sinon, je voulais mettre toutes les variables que je veux observer dans une classe "Variable Observable" (en static) et faire en sorte que ce soit cette classe qui soit observable. Je pense que c'est plus simple. Mais pas très jolies en codes. Voir complètement "dégueu".

    Je ne sais pas quelle méthode est la mieux. Je suis sûr qu'il y a plus simple et c'est pour ça que je créer se topique.

    Merci à tous ceux qui se pencheront sur ce problème.

    PS: Il est possible que ce topique ne soit pas placé au bon endroit. Mais je ne savais pas où le mettre.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Par défaut
    Si j'ai bien compris tu voudrais pouvoir récupérer les nouvelles valeurs (fraichement modifiées par l’utilisateur) et les utiliser. C'est bien ça?

    Si oui, tu n'as qu'a utiliser la méthode "<variable>.getValue()" dans une assignation par exemple.

    Mais je ne suis pas sûr que c'est vraiment cela que tu voulais dire... Tu pourrais reformuler ta question s'il te plait?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Salut badich,
    Citation Envoyé par badich Voir le message
    Je veux qu’elle soit observable, car certain élément seront modifier dans cette fenêtre.
    Mais comment faire en sorte que cette fenêtre connaisse le contrôleur. (addobservable()).
    Ce que je conclu de ce paragraphe, c’est tu veux faire une IHM avec un contrôleur qui gérera les actions effectués sur la fenêtre (Cliques sur boutons, saisie, affichage,… etc)
    Dans ce cas là on va plutôt parler du patern MVC (Model-View-Controller).

    Citation Envoyé par badich Voir le message
    Au début j'ai pensé mettre en paramètre le contrôleur. Mais ce n’est pas très pratique.
    C’est clair que ce n’est pas pratique de passer en paramètre d’une vue un contrôleur ! C’est plutôt l’inverse, car généralement le contrôleur gère les événements et met à jour la vue et/ou le modèle et les synchroniser.
    Je te conseil ce tutoriel http://baptiste-wicht.developpez.com...onception/mvc/
    Pour résumer, dans ce tutoriel Batiste witcht présente le MVC comme ceci :
    On crée le model : Model m = new Model()
    On crée le contrôleur : Controller c = new Controller(m)
    On crée la vue : View v = new View(c)

    Mais dans dans les projets que j’ai pu rencontrer, on trouve aussi cette variante :
    On crée le model : Model m = new Model()
    On crée la vue : View v = new View(m)
    On crée le contrôleur : Controller c = new Controller(v) / new Controller(m, v)

    J’ajoute que même les composants swing sont fait cette façon : View(model) tout en sachant que le contrôleur est dans la vue elle-même( par exemple une JTable : new Jtable(TableModel m) ;

    J’espère que j’ai bien compris ton problème et que j’ai pu être clair

  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 : 45
    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
    Personellement, j'ai aussi tendance à laisser la vue se charge de créer le controller.

    Pourquoi? Parce que, alors qu'un Model peux servir à plusieurs vue (exemple: je peux afficher ma collection de CDs sous forme de JTable ou sous forme d'une graphique déroulant de pochettes), le controlleur est tellement lié aux composants de ta vue qu'il n'est pas réutilisable ailleurs. Donc perso le privilégie le mode:


    new Model()
    new View(Model) -> New Controller(this), controller.setModel(model)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 35
    Par défaut
    Bonjour,

    Je repond en retard (et sans accent).

    Je ne sais plus exactement pourquoi j'ai fais ce poste,
    Mais, si je me trompe pas, c'est tout simplement car j'avais, a ce moment et toujours maintenant, enormement de mal avec le model MVC.
    J'ai eu beau lire et re-lire differents topics, tutoriel, je n'y suis jamais arrive.

    c'est surement du au fait que pour l'instant je n'ai fait que des projets seul en java et des projets petits, ceux qui reduit l'utilite de ce model.

    Si je me trompe pas, mon probleme etait que les informations modifiees dans la nouvelle fenetre devais apparaitre ensuite sur la fenete mere.
    Pour contourner le probleme, j'avais la "vue" qui gerait en meme temps toutes les donnees.
    Ainsi, je me servais du retour des JDialog pour envoyer les informations a la fenetre mere: toutes les donnes se retrouver dans une classe expres. (Donc, une classe par fenetre ... )
    Et finalement quand tous les parametres etait modifier, j'envoyer les donnees au programme principal pour qu'il les traite.
    Ce procede est une horreur.

    En tout qu'a merci pour vos reponses,
    Meme avec 5 mois de retard et moi 12.

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

Discussions similaires

  1. [débutant] Afficher un JPAnel par dessus un JPanel ?
    Par dymezac dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/03/2006, 20h02
  2. [C++] débutant création d'une form
    Par TERRIBLE dans le forum C++
    Réponses: 7
    Dernier message: 10/10/2005, 12h23
  3. [CR][.NET][Débutant] Création d'un Etat groupé
    Par SoaB dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 09/05/2005, 14h28
  4. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  5. [Débutant] Création de procédure stockée
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2004, 18h19

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