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 :

Action dans un mouseClicked


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut Action dans un mouseClicked
    Salut

    J'ai un mouseClicked et je voudrais y mettre une AbstractAction... mais comment???? quoi mettre???

    edit : C'est n'importe quoi!!! je vais essayer de mieux m'exprimer....

    j'ai une classe arbre.java dans laquelle j'ai un mouseClicked pour gérer les cliques de souris sur les leaf de mon JTree, ce mouseClicked fonctionne puisque je lui demande pour l'instant d'afficher sur la console le nom du leaf sur lequel je clique.
    J'ai une classe actionachat.java dans laquelle je définie une action et je voudrai que quand je clique sur une feuille de mon JTree ca execute l'action. Sachant que j'ai une action par feuille... ça doit pas etre grand chose je vais continuer à chercher mais si quelqu'un connais, forcément ça me fera gagner du temps....

    merci!!!

  2. #2
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Tu pourrais tout simplement faire de la délégation, quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void mouseClicked(MouseEvent e){
      Action monAction = new ActionAchat();
      monAction.actionPerformed(new ActionEvent(e.getSource(), e.getID(), null));
    }
    Je n'ai pas essayé depuis longtemps donc je ne peux pas te garantir que ça fonctionne mais ça vaut le coup d'essayer.

    Au passage, implémenter mouseClicked() n'est pas la meilleure option: on conseille toujours d'implémenter mouseReleased() à la place de façon à ce que l'utilisateur puisse annuler son action simplement en déplaçant sa souris avec le bouton enfoncé en dehors du composant.

  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
    Citation Envoyé par rozwel
    Au passage, implémenter mouseClicked() n'est pas la meilleure option: on conseille toujours d'implémenter mouseReleased()
    Tu dois confondre avec mousePressed(). La méthode mouseClicked correspond justement à un (des) mousePressed et un (des) mouseReleased consécutifs sur le même composant (avec gestion des double clics).

    Sinon, grabriel, j'ai plusieurs questions :
    - est-tu sûr que tu ne veux pas utiliser un TreeSelectionListener plutôt qu'un MouseListener ? (En fait ça dépend vraiment de ce que tu veux faire, mais c'est bête de passer à côté)
    - Pourquoi veux-tu absolument exécuter une action ? Si tu as plusieurs évènements qui peuvent enclencher la même action, le plus facile est d'écrire un méthode qui sera appelée par les différents listeners.
    "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 éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Mon progrmme à une barre de menu, pour chaque menu j'ai crée une classe actionxxx (actionenregistrer,actionpageverte,actionpagerouge etc...), pour JTree m'interesse que les actionpagexxx qui affichent des JPanel dans ma JFrame.
    Le JTree est en doublon pour faciliter la navigation mais fait exactement la meme chose que la barre de menu, vu que j'ai déjà crée les class actionpagexxx pour le menu je comptais m'en servir pour mon JTree. Et donc lancer les actions en cliquant sur une feuille de l'arbre.
    Peut-etre que la solution de xavlours pour l'utilisation de TreeSelectionListener conviendrai mieux mais pour l'instant avec un mouseCliked ça fonctionne. Mais si y'a mieux je suis prenneur.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    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 904
    Billets dans le blog
    54
    Par défaut
    Mais que contiennent les noeuds ton JTree ? Pourquoi ne pas mettre directement les actions dedans et declencher l'action choisie quand le noeud est selectionne via un TreeSelectionListener.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DefaultMutableTreeNode node = (DefaultMutableTreeNode)n;
    final Action action = (Action) node.getUserObject();
    SwingUtilities.invokeLater(new Runnabled() {
      /** @inheritDoc
      */
      public void run() {
        action.actionPerformed(...);
      }
    });
    Le SwingUtilities.invokeLater() est juste la pour deferer l'action a un moment plus approprie, si tu penses que l'action est suffisement legere, autant l'executer immediatement.
    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

  6. #6
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    >Mais que contiennent les noeuds ton JTree ?

    des feuilles normal....

    >Pourquoi ne pas mettre directement les actions dedans et declencher l'action choisie quand le noeud est selectionne via un TreeSelectionListener

    Je vais explorer cette piste...........

    Merci pour le tuyau!!!

  7. #7
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par bouye
    Le SwingUtilities.invokeLater() est juste la pour deferer l'action a un moment plus approprie, si tu penses que l'action est suffisement legere, autant l'executer immediatement.
    Euh, non, pas vraiment...
    C'est surtout pour l'exécuter à partir du bon Thread (l'EDT), celui qui gère l'affichage graphique (qui a comme contrainte de devoir s'exécuter à partir d'un seul et même thread...

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

Discussions similaires

  1. [STRUTS] Plusieurs actions dans une meme page
    Par DarkWark dans le forum Struts 1
    Réponses: 22
    Dernier message: 10/01/2006, 16h18
  2. [FLASH MX2004] Actions dans un DataGrid
    Par aldo-tlse dans le forum Flash
    Réponses: 3
    Dernier message: 25/11/2005, 12h46
  3. Confirmer une action dans un lien PHP
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 19h29
  4. [JSP]meme action dans 2 jsp
    Par zach dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/02/2005, 08h34
  5. [C#] Déclencher action dans Repeater avec LinkButton
    Par globeriding dans le forum ASP.NET
    Réponses: 13
    Dernier message: 13/05/2004, 15h29

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