Evenement de souris en JAVA

grandJack -  
 danimo -
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. danimo
     
    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
    0
  2. malaik5 Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   33
     
    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);
    }
    0
    1. danimo
       
      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...
      0
    2. grandJack
       
      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.
      0
    3. grandJack
       
      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
      0
  3. danimo
     
    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
    0