Evenement de souris en JAVA

Bonjour,

je code en JAVA et je cherche a affiché la valeur d'un nombre que je représente par une ligne dans un graphe, cette ligne est tracé grace a la méthode g.drawline.

J'aimerais quand passant la souris sur cette ligne on est la valeur de ce nombre.

Existe t il une méthode capable de faire ca ?
Merci

3 réponses

  1. Salut,

    Je ne comprend pas comment tu peux récupérer un nombre ou un text en cliquant (ou en survolant) une ligne. A moins que ce soient les coordonnées de cette ligne ?

    Dan
    1. Salut,
      essaye de regarder du coté des evenements souris: voilà une piste:

      MouseEvent ;

      public interface MouseListener extends EventListener {
      void mouseClicked(MouseEvent e);
      void mouseEntered(MouseEvent e);
      void mouseExited(MouseEvent e);
      void mousePressed(MouseEvent e);
      void mouseReleased(MouseEvent e);
      }
      1. Ok pourquoi pas, mais sommes-nous certains que LE nombre qu'il veut obtenir en cliquant sur le dessin d'une ligne est par exemple la valeur x OU la valeur y (l'une des coordonnées donc) correspondant au click ou au positionnement du curseur de la souris et peut--être lui conseiller de voir du coté de la classe MouseAdapter...
      2. Oui en fait la méthode qui me permet de tracer ma ligne, ou plutôt mon segment, prend en paramètres les coordonnées x et y des points d'extrémités du segment.

        Je débute en fait et je ne sais pas comment affiché des éléments juste en passant ma souris dessus.
      3. et oui je veut affiché la valeur de la coordonnée Y du deuxième point si je passe ma souris sur la mon segment correspondant..

        ca a l'air super chaud.. heeeeeeeelp
    2. Salut,

      Ce code issu du site http://www.java2s.com/Code/Java/Event/MouseMotionEventmousemoveanddrag.htm
      te montrera comme il est difficile d'obtenir les coordonnées exactes d'un dessin (c'est à dire les coordonnées telles que le texte (String) ou le segmentde l'exemple suivant, tels qu'ils ont été créés).

      Pour un texte il faut cliquer juste en bas et à gauche du premier caractère, sans toucher ce caractère.

      Pour un segment et pour les x/y du point de droite, il faut cliquer juste à droite de la fin du segment (ton cas) et bien entendu pour obtenir x/y du point de gauche, juste à gauche du début.

      C'est d'autant plus difficile que la "figure" est fine.

      Le code:

         import java.awt.Color; 
         import java.awt.Graphics; 
         import java.awt.event.MouseEvent; 
         import java.awt.event.MouseMotionListener; 
         import java.awt.Font; 
      
         import javax.swing.JFrame; 
         import javax.swing.JPanel; 
         import java.awt.Font;  
      
      
         public class CoordonneesMouseMotionEventDemo extends JPanel implements MouseMotionListener { 
            private int x, y; 
            private static Font font20; 
          
            public CoordonneesMouseMotionEventDemo() { 
               addMouseMotionListener(this); 
               setVisible(true); 
            } 
          
            public void mouseMoved(MouseEvent me) { 
               x = (int) me.getPoint().getX(); 
               y = (int) me.getPoint().getY(); 
                
               System.out.println("x / y" + x + "/" + y);  
              
               repaint(); 
            } 
          
            public void mouseDragged(MouseEvent me) { 
               mouseMoved(me); 
            } 
          
            public void paint(Graphics g) { 
             
            // Afficher un texte (String): 
               g.setColor(Color.blue); 
               g.setFont(font20); 
               g.drawString("BONJOUR", 100, 50); 
                
             // dessiner un segment: 
               g.setColor(Color.black); 
               g.drawLine(150, 80, 200, 80); 
             
               g.setColor(Color.red); // blue 
               g.fillRect(x, x, 0, 0); //0, 0 pour ne pas afiicher la "trace" mais lister les cordonnées 
               // voir ce que nous obtenons avec par exemple: 
             // g.fillRect(x, x, 4, 4); 
            } 
          
            public static void main(String[] args) { 
             
               font20 = new Font("Arial", Font.BOLD, 20); 
                
               JFrame f = new JFrame(); 
               f.getContentPane().add(new CoordonneesMouseMotionEventDemo()); 
               f.setSize(400, 400); 
               f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
               f.setVisible(true); 
            } 
         } 
      


      Tu peux essayer et me dire ce que tu en penses.

      Cordialement,

      Dan