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 :

[Conception] Communication entre Ecouteur


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par défaut [Conception] Communication entre Ecouteur
    Bonjour à tous,

    Je suis en train de coder un écouteur d'évènement et je voudrais récupérer des informations venant d'un autre écouteur (style PAC si j'ai bien compris son fonctionnement).

    Et out ça sachant que j'ai codé l'écouteur permettant de récupérer un couple d'entier que je voudrais passer dans l'autre.

    Autre question : est il possible de passer dans le constructeur d'un écouteur un autre écouteur ( new ActionListener(new autreActionListener()) )?


    J'ai regardé mes cours et j'ai rien trouvé de parlant...

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    Ca a l'air un peu bizarre comme approche (pourquoi ne pas mettre les deux Listeners sur la même source d'évènements ?)


    Sinon, tu peux faire quelque chose de la forme :
    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
    public class ListenableActionListener implements ActionListener {
     
      private ActionListener listenerForThis;
      // cette classe ne supporte qu'un unique ActionListener
     
      public ListenableActionListener(ActionListener listenerForThis) {
        this.listenerForThis = listenerForThis;
      }
     
      public void actionPerformed(ActionEvent e) {
        listenerForThis.actionPerformed(e);
     
        // le vrai contenu de ta methode
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par défaut
    ah ouais pas bête j'avais pas pensé à ça.

    Mais est ce que quelqu'un aurait des supports de cours PAC avec un exemple précis en java? parce que l'exemple que j'ai chopé sur internet est en C++

  4. #4
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Pour info, qu'appelles tu PAC ?!?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par défaut
    ah oui PAC pour Presentation Abstraction Controleur c'est une méthode pour créer une interface. C'est le découpage d'une interface en 3 classes que sont la présentation (JFrame, JPanel...), l'abstraction (ton noyau fonctionnel qui sont les objets que tu veux manipuler comme un compteur par exemple) et le controleur (ActionListener par exmple).

    On doit faire notre interface en PAC ou seeheim (autre méthode) mais la conseillée est le PAC donc si vous avez 2 3 conseils à me donner en PAC c'est pas de refus... (façon de le coder surtout )

    merki

  6. #6
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Je suis plutot d'accord avec le système PAC, surtout qu'il t'évitera de faire des choses pas belles comme celle que je t'ai montré.

    A priori tu as toutes les infos pour coder en PAC, qu'est ce que tu ne comprends pas ? Si tu nous décris rapidement ton projet (pas forcément besoin de code), on peut te donner une idée des classes à construire.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par défaut
    En gros on a un jeux video à coder

    J'ai créé un package par Fenetre. Pour l'instant j'ai fait casiment tout ce qui est présentation mais j'ai aussi des fonctions d'appel un minimum élaborées mais si j'ai bien compris il faut créer un objet "Abstraction" qui les regrouperait.

    De plus j'ai un listener sur un bouton qui en un clic modifie 2-3 trucs sur l'affichage. Et là encore si j'ai bien compris je doit faire une classe par objet graphique qui permettra de faire le médiateur avec les autres élements graphique (celui qui a compris je lui tire mon chapeau).

    Mais je bloque pour ce qui est de manipuler les objet et les actions entre elles. Si vous zavez un bo shéma ou autre chose...

    Bref c'est un sacré bordel l'organisation.

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Ca a l'air un peu bizarre comme approche (pourquoi ne pas mettre les deux Listeners sur la même source d'évènements ?)
    Pas forcement si tu regardes les sources de Swing, nottement les UI et les modeles tu verras trainer pas mal de petites classe internes d'ecouteur denommees helper qui ne servent a rien d'autre qu'a renvoyer un evenement recut en changeant juste/uniquement la source de l'evenement (pour que la source soit le composant lui-meme et non pas son UI ou son modele). Faire ce genre de chaineage aurait pu permettre d'eviter ce genre de "polution" du code par exemple.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bouye : c'est vrai, mais c'est quand même assez avancé comme contexte.

    Loïc : les méthodes qui dessinent se rapportent à la partie Présentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(getMana() > 0)
      g.setColor(Color.YELLOW);
    else
      g.setColor(Color.RED);
    g.fillOval(...);
    Les variables, getters et setters qui définissent quoi dessiner appartiennent à la partie Abstraction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int mana;
    public int getMana(); 
    public void setMana(int value);
    Les listeners font partie du Controle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPerformed(ActionEvent e) {
     if(e.getActionCommand().equals("Launch spell"))
      if(getMana() > 0)
        setMana(getMana() - 50);
    Le principe du PAC, c'est de ne pas définir une classe Mana qui regroupe tout ça, mais plutôt :
    - une classe CharacterPanel qui va dessiner un certain nombre de choses, dont le Mana (Présentation)
    - Une classe Character qui regroupe l'état du personnage (Abstraction)
    - une classe CharacterControl qui contient les méthodes pour faire agir le personnage (lancer un sort par exemple).

    J'ai été clair ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/08/2012, 20h13
  2. Conception : communication entre signaux et slots
    Par betsprite dans le forum Débuter
    Réponses: 0
    Dernier message: 24/04/2012, 12h31
  3. Communication entre processus
    Par markopolo dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2003, 16h21
  4. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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