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

Composants Java Discussion :

Contrôler l'apparence d'un noeud en fonction de l'evt mouseOver


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Par défaut Contrôler l'apparence d'un noeud en fonction de l'evt mouseOver
    Bonjour,

    J'aimerais pouvoir contrôler l'apparence d'un noeud en fonction que le curseur de la souris passe sur ce noeud ou non. Concrètement, quand la souris passe sur le noeud je voudrais que le curseur change pour une petite main et que le texte du noeud apparaisse en bleu souligné (comme un lien hypertexte). C'est pour faire un menu dans un cadran gauche et chaque noeud - item de menu - est cliquable.

    Je sais comment attraper un événement et le relier au noeud source; je sais que les renderers contrôlent l'apparence, mais j'arrive pas à trouver un pont entre les 2 ! Dans le renderer, on sait juste si le noeud est sélectionné ou a le focus...

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    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 899
    Billets dans le blog
    54
    Par défaut
    Oui MAIS le renderer a acces a l'objet qui est le noeud egalement (un DefaultMutableTreeNode ? ou un TreeNode ?). Donc si cet objet (oui l'objet qu'il contient dans le cas d'un DefaultMutableTreeNode ) a des infos supplementaires quand a l'etat de la position de la souris............................ le renderer peut s'adapter en fonction...
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Par défaut
    La question, c'est comment?

    Le modèle de programmation en java c'est plutôt : j'attrape l'événement (un MouseEvent), donc je connais les coordonnées x et y du pointeur de souris, donc je peux déduire le noeud où se trouve la souris.
    A partir du noeud, je ne sais pas comment savoir si la souris est en train de passer dessus ou pas.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    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 899
    Billets dans le blog
    54
    Par défaut
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    class NodeStruct {
      boolean mouseOver;
      MyObject userObject;
    }
     
    [...]
    NodeStruct nodeStuct = new NodeStruct();
    nodeStuct.mouseOver = false;
    nodeStuct.userObject = myObject;
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(nodeStuct);
    [...]
     
    DefaultMutableTreeNode lastMouseOverNode  = null;
     
    public void mouseMoved(MouseEvent event) {
      [...]
      DefaultMutableTreeNode currentNode = ...
      [...]
      if (lastMouseOverNode != null) {
         NodeStruct nodeStruct = (NodeStruct)lastMouseOverNode.getUserObject();
         nodeStruct.mouseOver = false;
         lastMouseOverNode= null;
      }
      if (currentNode != null) {
        NodeStruct nodeStruct = (NodeStruct)currentNode .getUserObject();
         lastMouseOverNode = currentNode ;
         nodeStruct .mouseOver = true;
      }
      repaint();
    }
     
    [...]
     
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)  {
      super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row,  hasFocus);
      MyObject myObj = null;
      boolean mouseOver = false;
      if (value instanceof DefaultMutableTreeNode) {
        value = ((DefaultMutableTreeNode)value).getUserObject();
      }
      if (value instanceof NodeStruct) {
        NodeStruct nodeStruct = (NodeStruct)value;
        myObj = nodeStruct.userObject;
        mouseOver = nodeStruct.mouseOver;
      }
      else if (value instanceof MyObject) {
        myObj = (MyObject)value;
      }
      if (myObj != null) {
         if (mouseOver) {
      [...]
    }
    Sinon tu peux tout aussi bien etendre la classe DefaultMutableTreeNode pour rajouter les champs qui te sont necessaires.
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 25
    Par défaut
    En effet ta stratégie fonctionne bien, merci bouye!

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

Discussions similaires

  1. Couleur d'un noeud en fonction de son nom
    Par Riri69 dans le forum Composants
    Réponses: 2
    Dernier message: 25/03/2011, 11h20
  2. [XSLT] Elaguer des noeuds en fonction des petits-fils
    Par Willl dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/12/2009, 11h37
  3. [XSLT] Regrouper les noeuds en fonction d'un attribut
    Par Creuvard dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2008, 11h31
  4. Treview et noeuds en fonction des utilisateurs
    Par Michelk12 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/10/2007, 09h52
  5. [DOM] avoir le contenu d'un sous noeud en fonction de l'attribut
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/07/2007, 17h24

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