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 régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Points : 475
    Points
    475
    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 régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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
    Points : 909
    Points
    909
    Par défaut
    y a aussi le mouseEntered et mouseExited des mouseListener
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  5. #5
    Membre régulier 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
    Points : 82
    Points
    82
    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.
    No guts, no glory

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 éprouvé
    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
    Points : 935
    Points
    935
    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 régulier 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
    Points : 82
    Points
    82
    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...
    No guts, no glory

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 régulier 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
    Points : 82
    Points
    82
    Par défaut
    Et qu'est-ce qui est "null"?
    No guts, no glory

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

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

  15. #15
    Membre éprouvé
    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
    Points : 935
    Points
    935
    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 régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 régulier 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
    Points : 82
    Points
    82
    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());
    }
    No guts, no glory

  18. #18
    Membre éprouvé
    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
    Points : 935
    Points
    935
    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 régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Points : 121
    Points
    121
    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 éprouvé
    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
    Points : 935
    Points
    935
    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, 16h18
  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, 12h59
  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, 01h45
  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, 09h16
  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, 02h09

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