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

avec Java Discussion :

propager une variable à tout le programme


Sujet :

avec Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut propager une variable à tout le programme
    Bonjour, je débute dans java (3 jours maintenant que j'ai commencé) et à la conception de mon programme, je suis tomber sur une colle pour quelque chose qui me paraissait pourtant couler de source dans le principe.

    N'ayant pas trouver ma réponse (ou n'ayant pas su la chercher peut-être), je me permets d'exposer mon problème ici :



    - "Main" instancie un objet JFrame ("Frame").

    - "Frame" instancie 3 objets JPanel ("PanelA", "PanelB", "PanelC").

    - "PanelA" dans une boucle, crée n instances d'objets "ClassDonné" et les stocks dans un tableau "table[]".

    Ma question donc est :
    Comment à partir de "PanelC" je peux récupérer "table[]" et changer les paramètres des objets qui y sont stockés ? Alors que "PanelA" et "PanelC" ne communique jamais entre eux.

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour.

    Si cela peut te rassurer, ce n'est pas quelque chose de si évident que ça

    En général, pour une interface graphique, on utilise le design pattern MVC qui sépare les données, le comportement et la vue. (Pour plus d'infos sur le sujet, tu peux rechercher MVC puis MVC+Swing, il existe de nombreuses doc et exemple).

    Pour répondre simplement à ton besoin, tu pourrais adopter la solution suivante:
    Dans ton main, tu créés ton modèle (une classe dédiée qui contiendra entre autre ton tableau).
    Ensuite, tu donnes le modèle à ta vue (JFrame) qui le propagera aux autres.

    Ce n'est bien sûr qu'un exemple.
    Si tu veux ensuite modifier ton modèle, il est conseillé d'employer un controlleur (cf. doc sur MVC).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci, je vais me pencher sur le design patern.
    Citation Envoyé par Deaf Voir le message
    Pour répondre simplement à ton besoin, tu pourrais adopter la solution suivante:
    Dans ton main, tu créés ton modèle (une classe dédiée qui contiendra entre autre ton tableau).
    Ensuite, tu donnes le modèle à ta vue (JFrame) qui le propagera aux autres.
    J'avais pensé à ça, mais le problème (et j'aurais du le préciser dans mon post) c'est que les paramètres objets stockés dans "table[]", une fois modifiés par "PanelC" doivent être réutilisables par "PanelA" qui lui les affiches en fait.

    On peut imaginer "PanelA" comme un écran et "PanelC" comme un clavier, "PanelA" affiche les informations au lancement et à chaque fois que je touche à "PanelC", "PanelA" doit modifier son contenu.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par reonZ Voir le message
    On peut imaginer "PanelA" comme un écran et "PanelC" comme un clavier, "PanelA" affiche les informations au lancement et à chaque fois que je touche à "PanelC", "PanelA" doit modifier son contenu.
    Plus concrètement cela donne quoi ?


    L'idéal serait de passer par un modèle de donnée partagé entre les deux composants.


    a++

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Je dirais même que si la comparaison écran/clavier est adaptée, ton "clavier" n'a pas besoin de connaître le modèle.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bon j'ai trouvé, en fait c'était tout simple, mais n'étant pas du tout familier à la programmation objet, je pensais encore de façon procédurale ; ce que j'ai fait donc :

    Dans ma class "Frame", je fournis comme argument "panelA" à l'instanciation de "PanelC"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PanelA panelA = new PanelA();
    PanelC panelC = new PanelC(panelA);
    et je peux donc récupérer et travailler avec toutes mes variables ou tableaux déclarés dans "panelA".

    Merci en tout cas pour les réponses, le design pattern va aussi beaucoup m'aider.

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

Discussions similaires

  1. propager une variable dans .getJSON()
    Par fab56 dans le forum jQuery
    Réponses: 4
    Dernier message: 19/01/2013, 09h42
  2. Réponses: 33
    Dernier message: 28/04/2010, 04h44
  3. Réponses: 2
    Dernier message: 23/10/2008, 15h03
  4. Réponses: 5
    Dernier message: 28/04/2008, 12h46
  5. Garder une variable tout en revenant en arrière
    Par oceane751 dans le forum Langage
    Réponses: 12
    Dernier message: 21/05/2006, 00h46

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