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

  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 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    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 éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    J'ai suivi les conseilles au-dessus j'ai mis un TreeSelectionListener... j'arrive à affiche le nom de ma feuille via la fonction valueChanged.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void valueChanged(TreeSelectionEvent e) {
    	        DefaultMutableTreeNode node = (DefaultMutableTreeNode)
    	                           getLastSelectedPathComponent();
     
    	        if (node == null) System.out.println("null"); //return;
     
    	        Object nodeInfo = node.getUserObject();
    	        if (node.isLeaf()) {	        	
    	        	System.out.println(nodeInfo);
    	        }         
    	    }
    Est-ce que je dois appeler mon action dans valueChanged si oui... je vois pas trop comment!!!!

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Justement cela depend de ce que contiennent les feuilles/noeuds de ton arbre. Qu'est ce que retourne getUserObject() ?
    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 éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Citation Envoyé par bouye
    Qu'est ce que retourne getUserObject() ?
    Citation Envoyé par grabriel
    j'arrive à affiche le nom de ma feuille via la fonction valueChanged.
    Mon getUserObject retourne le nom de ma feuille!!

    Faut que je fasse une class qui extends DefaultMutableTreeNode et qui prends en paramètre mon action???

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Ah ! cela contient donc une simple String. Probablement le label qui est directement affiche sur l'arbre graphique, non ?

    Donc :
    - Soit il te faut quelques par une Map<String, Action> (par exemple) qui te permette d'appeler l'action qui sera utilisee quand on active la feuille.
    - Tu peux aussi avoir une List<Action> et parcourir celle-ci pour verifier que l'actionCommand de l'action ou que le nom de l'action ou le texte de l'action est le meme que la String.
    - Cela peut aussi se faire par la reflexion.

    Note si tu penses etre amene a traduire ton programme ce n'est peut-etre pas une bonne idee que de mettre le label a afficher directement chaque noeud/feuille de l'arbre. Mieux vaut mettre la cle a partir de laquelle on recuperera les labels localises et de fournir a l'arbre un TreeCellRenderer approprie.

    Pas besoin de deriver de DefaultMutableTreeNode (sauf si tu as vraiment envie de le faire), la classe est utilisable directement tel quelle.
    Rappelle-toi que tu peux mettre tout et n'importe quoi dans ces objets pas juste des String et que tu peux changer l'apparence de l'arbre (y compris le label qui s'affichent sur un noeud) avec un TreeCellRenderer.
    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

  11. #11
    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...

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Il est déjà dans l'EDT, ce bout de code est une partie du TreeSelectionListener (mais je n'ai peut-être pas été assez explicite). Le invokeLater() est donc bien là pour déférer l'action à un moment ou l'EDT est moins chargée. Mais il est optionnel, une exécution directe de l'action est possible.

    Citation Envoyé par javadoc
    If invokeLater is called from the event dispatching thread -- for example, from a JButton's ActionListener -- the doRun.run() will still be deferred until all pending events have been processed.
    Typiquement comme c'est une GUI on peut attendre un peu (ce qui en général n'est pas visible par l'utilisateur) plutot que d'éxécuter le changement immédiatement/instanément. De plus si l'utilisateur fait beaucoup de sélection de noeud différents dans un très court laps de temps on a tout intérêt à utiliser un Timer swing avec un temps de lancement réglé aux alentour de 250~750ms et dont on fait restart() quand il y a une nouvelle sélection (seul le plus récent lancement est pris en compte).
    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

  13. #13
    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
    Merci bouye pour cet eclairsissement!!!

    Pour détecter les modifications sur l'arbre action j'utilise valueChanged (TreeSelectionEvent) mais pour mon action je peux pas me servir de l'evenement "TreeSelectionEvent" .....??????

    Dans mon actionPerformed(????) j'utilise quoi comme event????


    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
    16
    17
    18
    19
    20
    21
     
    public void valueChanged(TreeSelectionEvent e) {
       DefaultMutableTreeNode node = (DefaultMutableTreeNode)
    	                           getLastSelectedPathComponent();
     
        if (node == null) System.out.println("null"); //return;
     
        final Action nodeaction = (Action) node.getUserObject();//recup l'objet
        if (node.isLeaf()) { //c'est une feuille
     
           SwingUtilities.invokeLater(new Runnable() {	  	          
    	   public void run() {
     
    	      nodeaction.actionPerformed(???);
     
    	   }
           });	        	
     
        } else {//c'est un répertoire
        }	        
    }

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Tu crée un ActionListener avec les paramètre que tu souhaites. Utilises-tu des actions que tu as créés toi-même ? Si c'est le cas tu sais donc si tu utilises ou pas les valeurs contenues dans l'objet événement (comme la source) et donc tu sais si tu peux te permettre de passer des valeurs bidons ou pas.

    Sinon je dirais :

    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
    16
    17
    18
    19
     
    public void valueChanged(TreeSelectionEvent e) {
       final JTree tree = (JTree)event.getSource(); // vérifier que l'arbre est bien la source de cet événement.
       DefaultMutableTreeNode node = (DefaultMutableTreeNode)
    	                           getLastSelectedPathComponent();
     
        if (node == null) System.out.println("null"); //return;
     
        final Action nodeaction = (Action) node.getUserObject();//recup l'objet
        if (node.isLeaf()) { //c'est une feuille
     
           SwingUtilities.invokeLater(new Runnable() {	  	          
    	   public void run() {
                       String command = (String)nodeaction.getValue(Action.ACTION_COMMAND_KEY);
    	      nodeaction.actionPerformed(new actionEvent(tree, ActionEvent.ACTION_PERFORMED, command));
                       // ou
    	      //nodeaction.actionPerformed(new actionEvent(nodeAction, ActionEvent.ACTION_PERFORMED, command));
    	   }
           });
    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

  15. #15
    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


    Merci, ca marche nickel!!!

    Par contre j'ai plus le nom de ma feuille, mais le nom de l'action qui s'affiche dans l'arbre???
    J'ai cherché du côté d'un setxxx pour le nom du noeud mais y'a rien.

    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
    16
    17
    18
    19
    20
    public void valueChanged(TreeSelectionEvent e) {
       final JTree tree = (JTree)event.getSource(); // vérifier que l'arbre est bien la source de cet événement.
       DefaultMutableTreeNode node = (DefaultMutableTreeNode)
    	                           getLastSelectedPathComponent();
     
        if (node == null) System.out.println("null"); //return;
     
        final Action nodeaction = (Action) node.getUserObject();//recup l'objet
        if (node.isLeaf()) { //c'est une feuille
     
           SwingUtilities.invokeLater(new Runnable() {	  	          
    	   public void run() {
                       String command = (String)nodeaction.getValue(Action.ACTION_COMMAND_KEY);
    	      nodeaction.actionPerformed(new ActionEvent(tree, ActionEvent.ACTION_PERFORMED, command));
                       // ou
    	      //nodeaction.actionPerformed(new ActionEvent(nodeAction, ActionEvent.ACTION_PERFORMED, command));
    	   }
           });
        }
    }
    J'ai remis le code en modifiant actionEvent en ActionEvent pour ceux qui louchent comme moi et qui perdent 10 minutes pour différencier une majuscule d'une minuscule .

  16. #16
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    C'est le TreeCellRenderer et son implementation concrete le DefaultTreeCellRender (que tu peux etendre - en fait c'est juste un JLabel) qui permettent de modifier l'apparence des noeuds d'un arbre.

    Tu peux :
    -utiliser le texte de l'action ou bien un texte alternative ; il te faudra trouver un moyen d'associer ce texte a l'action (par exemple en rajoutant une propriete "maison" description dans l'action - voir aussi les proprieties/keys existantes, certaines peuvent deja servir a cela).
    - utiliser l'info-bulle de l'action sur le noeud de l'arbre.
    - mettre l'icone de l'action sur le noeurd de l'arbre.
    .........................

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    class ActionTreeCellRenderer extends DefaultTreeCellRenderer {
      /** @inheritDoc
      */
      @Override public void getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)  {
       super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus) 
        DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
        Object obj = node.getUserObject();
        Icon icon = null;
        String tooltip = null
        boolean enabled = tree.isEnabled();
        if (obj instanceof Action) { 
          Action action = (Action)obj;
          icon = (Icon)action.getValue(Action.SMALL_ICON); //Redimensionner l'icone si necessaire.
          tooltip = (String)action.getValue(Action.SHORT_DESCRIPTION);
          enabled &= action.isEnabled();
        }
        setIcon(icon);
        setToolTipText(tooltip);
        setEnabled(enabled); 
        return this;
      }
    }
     
    ...
     
    tree.setCellRenderer(new ActionTreeCellRenderer());
    Note : avant de lancer ton action dans le code que tu as poste precedement, tu devrais verifier si elle est enabled ou pas.

    Je te proposes egalement d'ajouter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.beans.*;
     
    ...
     
    action.addPropertyChangeListener(new PropertyChangeListener() {
      public void propertyChange(PropertyChangeEvent event) { 
       tree.repaint();
      }
    });
    Sur toutes tes actions lors de leur creation (ne pas hesiter a centraliser le listener, plutot que de creer une pletore de listener anonymes), pour que l'arbre mette a jour son affichage si on modifie l'action.
    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

+ 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