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 :

recuperer un composant sans cliquer dessus


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut recuperer un composant sans cliquer dessus
    Bonjour.
    je voudrais pouvoir recuperer un composant sur lequel la souris passe sans cliquer dessus.
    mon composant est un jgraph qui a un ensemble de cellule.
    en lui appliquant un tooltip, j'aurais le meme message quelque soit l'endroit ou je le passe.
    j'ai donc besoin d'une methode, qui me donne le composant sur lequel est la souris(sans clic) pour pouvoir personnaliser mon tooltip.
    merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Tu peux implémenter un MouseMotionListener et, à chaque déplacement de la souris, regarder au-dessus de quelle composant elle se trouve.

    Nicolas

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    merci.
    je vais voir ce que ça donne.

  4. #4
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    y a aussi le mouseEntered et mouseExited des mouseListener

  5. #5
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Le problème du mouseEntered et du mouseExited, c'est qu'il faut les définir pour chacun des composants présents.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    voila:
    j'ai ecrit ceci, mais malheureusement, il n'affiche rien.

    en fait, je voudrais afficher le nom de chaque cellule de mon graphe, quand on passera dessus.

    merci d'avance.



    g.addMouseMotionListener(new MouseMotionAdapter(){
    public void mouseMoved(MouseEvent e){
    Object[] grap = g.getComponentListeners();
    for(int i=0;i<grap.length;i++){
    if(grap[i] instanceof DefaultGraphCell){
    String text = grap[i].toString();
    g.setToolTipText(text);
    }
    }
    }
    });

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Peux-tu nous donner un SSCCE avec un graphe contenant quelques cellules ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    Bonjour nicholas.
    je pense qu'on s'eloigne de mon veritable probleme.
    pour le moment, mon programme marche, sauf que pour afficher le nom d'une cellule, je suis obligé de cliquer dessus, en utilisant ceci:
    g.addGraphSelectionListener(new GraphSelectionListener(){
    public void valueChanged(GraphSelectionEvent selEvent)

    sauf que, je ne veux plus cliquer dessus, mais juste passer la souris.
    je crois donc que le probleme c'est au niveau de l'utilisation de la methode mousemoved.
    merci encore.

  9. #9
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    Dans le listener :
    le mouseEvent à une methode getPoint() qui donne la position de la sourie

    dans le Graph, il y a une méthode qui donne la selection à partir d'un point public Object getSelectionCellAt(Point2D pt)


    essais quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    g.addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseMoved(MouseEvent e){
           String text = g.getSelectionCellAt(e.getPoint()).toString();
           g.setToolTipText(text);
        }
    });

  10. #10
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    En effet, je n'ai pas l'impression que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] grap = g.getComponentListeners();
    va te donner le composant sur lequel tu passes mais plutôt les listeners qui lui sont associés.

    En revanche, je ne suis pas familier avec les JGraph et je ne sais pas si la méthode toString() est appropriée. Peut être qu'il existe une méthode getText().
    A voir...

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    Bonjour fnobb.
    j'ai essayé ce que tu as envoye, il me genere un javanullexceptionpointer.
    je suis en train d'essayer de le modifier.
    il se comporte comme si la souris ne pointait sur rien.
    je crois qu'il faut d'abord faire un test.
    je cherche encore.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    le javanullexceptionpointer pointe justement sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String text = g.getSelectionCellAt(e.getPoint()).toString();

  13. #13
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Et qu'est-ce qui est "null"?

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    je ne sais pas.
    peut etre le getpoint?

  15. #15
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    regarde ce que renvoie :
    1) e.getPoint();
    2) g.getSelectionCellAt(e.getPoint())

    sinon autre possiblité à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.getSelectionCellAt(e.getPoint())
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.getLeafViewAt(e.getX(), e.getY())

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    le getpoint, et le getselectioncellat renvoient respectivement chaque fois

    java.awt.Point[x=251,y=158]
    null

    le getselectioncellat est donc chaque fois null, et il plante.

  17. #17
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Scrogneugneu c'est ça d'appeler toString() à tout bout de champ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DefaultGraphCell cell = (DefaultGraphCell)g.getSelectionCellAt(e.getPoint);
    if (cell != null) {
      g.setToolTipText(cell.toString());
    }

  18. #18
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    cette fois c'est probablement la bonne solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    graph.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
    if (e.getClickCount() == 2) {
    // Get Cell under Mousepointer
    int x = e.getX(), y = e.getY();
    Object cell = graph.getFirstCellForLocation(x, y);
    // Print Cell Label
    if (cell != null) {
    String lab = graph.convertValueToString(cell);
    graph.setToolTipText(lab);
    }
    }
    }
    });

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    g.addMouseMotionListener(new MouseMotionAdapter(){
    				        	    	  public void mouseMoved(MouseEvent e){
    				        	    		          System.out.println(e.getPoint());
    				        	    		          System.out.println(g.getSelectionCellAt(e.getPoint()));
    				        	    		          DefaultGraphCell cell = (DefaultGraphCell)g.getSelectionCellAt(e.getPoint());
    				        	    		          if (cell != null) {
    				        	    		            g.setToolTipText(cell.toString());
    				        	    		          }
    				        	    			  }
    				        	       });
    le getpoint et le getselectioncellat me renvoient

    java.awt.Point[x=819,y=15]
    null

    par contre, bizarement, quand je clique sur le composant, j'ai bien le nom qui est affiché dessus.

  20. #20
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    ben comme son nom l'indique getSelectionCellAt

    il renvoie la cellule sélectionnée (si aucune selection renvoie null d'ou le NullPointerException)

    la méthode getFirstCellForLocation renvoie la cellule du dessus ( même si aucune selection)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/08/2011, 17h18
  2. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 13h59
  3. Comment fermer une Popup sans cliquer dessus
    Par jackm dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 27/12/2008, 02h45
  4. Command_Button s'exécutant sans cliquer dessus
    Par Terim dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/08/2008, 10h16
  5. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 03h09

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