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

AWT/Swing Java Discussion :

passage d'un ActionEvent d'un champ classe à sa classe englobante


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Par défaut passage d'un ActionEvent d'un champ classe à sa classe englobante
    Bonjour!
    J'ai un problème (que je trouve) assez complexe que je vais essayer de décrire clairement.


    Je travaille avec les classes:

    -NouvelElement, c'est une interface graphique reposant sur une BoxVertical, à laquelle j'ai ajouté des BoxHorizontal qui contiennent chacune plusieurs composants graphiques. Une fois cette interface créee, je voudrais pouvoir ajouter dynamiquement des nouvelles BoxHorizontal (décrites par la classe EtageAttribut, détaillée ci-dessous). Ma classe NouvelElement dispose d'une LinkedList<EtageAttribut> à laquelle chaque BoxHorizontale ajoutée dynamiquement est ajoutée.

    -EtageAttribut: hérite de Box, comprend un JComboBox dans laquelle l'utilisateur fera un choix, ainsi qu'un JTextField à éditer et un bouton "Supprimer" (de classe BoutonSupprimer, détaillée plus bas) qui permettra de supprimer cette BoxHorizontale de ma fenetre NouvelElement.

    -BoutonSupprimer (un JButton qui sait à quel EtageAttribut il appartient):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class BoutonSupprimer extends JButton {
     public BoutonSupprimer(EtageAttribut etage) {
        this.etage = etage;
      }
     
      public EtageAttribut getEtage() {
        return etage;
      }
     
      private EtageAttribut etage;
    }

    Mon problème est que si un utilisateur veut supprimer un EtageAttribut, c'est la classe NouvelElement qui dois en être informée pour modifier sa LinkedList<EtageAttribut> puis mettre à jour l'interface. Ma classe EtageAttribut implémente ActionListener, et peut donc écouter les actions sur son bouton supprimer, mais comment faire pour générer un ActionEvent dans NouvelElement, et permette de remonter jusqu'au BoutonSupprimer qui l'a généré, et donc jusqu'à l'EtageAttribut auquel il appartient?

    Merci d'avance pour votre aide, moi je galère

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Par défaut
    Heeeeelp!!!!
    personne ne sait comment faire?



  3. #3
    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
    C'est un peu embrouillé ce que tu décris, j'ai l'impression que tu compliques des choses qui peuvent être simples.

    Quel composant doit réagir lorsque tu cliques sur un bouton ? Je pense que c'est ton objet NouvelElement (qui devra appeler remove). La classe EtageAttribut n'a à priori aucune raison d'être au courant des clics sur le bouton supprimer. Donc NouvelElement écoute des clics, et doit être un ActionListener.

    Pour savoir quel composant enlever, un petit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BoutonSupprimer b = (BoutonSupprimer) monActionEvent.getSource();
     
    EtageAttribut ea = b.getParent(); // ou getEtage() si tu préfères
     
    this.remove(ea);
    En ajoutant des vérifications (instanceof) pour éviter de te prendre une ClassCastException, ça ira très bien.
    "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.

  4. #4
    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
    Ou sinon, maintenant que j'y repense, une architecture comme ça peut marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    classe NouvelEtage :
      ajouterEtage()
      supprimerEtage(EtageAttribut)
     
    classe EtageAttribut implements actionListener:
      actionPerformed()
        si supprimer
          getParent().supprimerEtage(this);
    "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.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Par défaut
    En fait mon problème c'est que je ne savais pas trop qui devait écouter mon BoutonSupprimer, mais ce que tu as écrit m'a bien fait cogiter, je vais faire des essais. Merci!

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

Discussions similaires

  1. passage d'objet de classe en classe
    Par claire13 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 24/03/2008, 18h13
  2. [noob] sauvegardes des champs d'une classe
    Par AlienQueen dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/11/2006, 02h05
  3. Récupérer les champs d'une classe
    Par gudul dans le forum Delphi
    Réponses: 3
    Dernier message: 15/10/2006, 14h01
  4. instanciation unique d'un champs dans une classe
    Par F.Victoire dans le forum Delphi
    Réponses: 4
    Dernier message: 15/06/2006, 18h34
  5. [VB]Passage d'une valeur NULL à un champ de type date?
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 01/02/2006, 17h04

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