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

Interfaces Graphiques en Java Discussion :

Detection de contour avec click de souris


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut Detection de contour avec click de souris
    salut
    je veux detecter un contour(avoir les cordonnes des points d image ou je click par la souris)en java
    si quelqu un peu m aider sur ca svp
    merci d avance
    n.b: debutante en java

  2. #2
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    Salut, il faut que tu mette en place un mouse listener
    un truc du genre :

    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
     
    public void mouseClicked(MouseEvent e) {
    	//Invoked when the mouse has been clicked on a component.
    	 x=e.getX();
    	 y=e.getY();
    	} 
     
    	public void mousePressed(MouseEvent e) {}
    	//Invoked when a mouse button has been pressed on a component.
     
    	public void mouseReleased(MouseEvent e) {}
    	//Invoked when a mouse button has been released on a component.
     
    	public void mouseEntered(MouseEvent e) {}
    	//Invoked when the mouse enters a component.
     
    	public void mouseExited(MouseEvent e) {}
    	//Invoked when the mouse exits a component.
    Tu definis les méthodes qui correspondent à ce que tu veux faire. Ici la methode mouseClicked met les coordonnées du point cliqué dans X et Y

    bien sur tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addMouseListener();
    sur l'objet qui va bien (celui sur lequel tu veut exouter les click de souris)

    Bon courrage

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    salut
    et bien merci pour votre reponse
    j ai pas bien compris ce que tu veux dire par le code si vous voulez m explique
    et est ce que je dois ajouter un return (x,y) apres ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void mouseClicked(MouseEvent e) {
        //Invoked when the mouse has been clicked on a component.
         x=e.getX();
         y=e.getY();
        }
    pour avoir les cordonnes je ss perdu
    merci

  4. #4
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    bon il faut que tu fasse un addMouseListener(new MyMouseListener()) sur l'objet qui doit ecouter les click de souris.

    Ensuite il faut definir la class MyMousseListener qui doit implementer MouseListener et y definir les méthode de l'interface MouseListener
    Dans la méthode mouseClicked tu fait e.getX() et e.getY() pour recupérer les coordonnées du point cliqué

    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
     
    Public class MyMouseListener implements MouseListener {
     
     public void mousePressed(MouseEvent e) {
     
        }
     
        public void mouseReleased(MouseEvent e) {
     
        }
     
        public void mouseEntered(MouseEvent e) {
     
        }
     
        public void mouseExited(MouseEvent e) {
     
        }
     
        public void mouseClicked(MouseEvent e) {
          x=e.getX();
          y=e.getY();
        }
     
    }
    voilou

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    merci pour votre attention vous m aider beaucoup
    et bien voila ce que je fais ca marche tjs pas

    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
    53
    54
    55
    56
     import javax.swing.* ; 
    import java.awt.* ; 
    class MaFenetre extends JFrame 
    { MaFenetre () 
    { setTitle ("IMAGES") ; 
    setSize (800, 500) ; 
    pan = new Panneau() ; 
    getContentPane().add(pan) ; 
    } 
    private JPanel pan ; 
    } 
    class Panneau extends JPanel 
    { public Panneau() 
    { photo = getToolkit().getImage("Sans titre.gif") ; 
    } 
    public void paintComponent(Graphics g) 
    { super.paintComponent(g) ; 
    int x=10, y=10 ; 
    if(photo != null) 
    {g.drawImage (photo, x, y, this);System.out.println("photo");} 
    } 
    private Image photo = null; 
    } 
     class TestMenu 
     
    Public class MyMouseListener implements MouseListener {
     
     public void mousePressed(MouseEvent e) {
     
        }
     
        public void mouseReleased(MouseEvent e) {
     
        }
     
        public void mouseEntered(MouseEvent e) {
     
        }
     
        public void mouseExited(MouseEvent e) {
     
        }
     
        public void mouseClicked(MouseEvent e) {
          x=e.getX();
          y=e.getY();
        }
     
    }
     
     
    { public static void main (String argv[]) 
    { MaFenetre fen = new MaFenetre() ; 
    fen.setVisible(true) ; 
    } 
    }
    si ta une suggestion svp svp

  6. #6
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    Salut,

    Comme je te le disais dans mes post précédent, il faut que tu ajoute le mouselistener sur ton panel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pan.addMouseListener(new MyMouseListener());
    ++

  7. #7
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    merci infiniment pour votre aide
    et bien voila ce que j ai fais mais ca marche tjs pas
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     import javax.swing.* ; 
    import java.awt.* ; 
    import java.awt.event.*;
    class MaFenetre extends JFrame 
     
    { MaFenetre () 
     
    { setTitle ("IMAGES") ; 
    setSize (800, 500) ; 
    pan = new Panneau() ; 
    getContentPane().add(pan) ; 
    pan.addMouseListener(new MyMouseListener(pan));
     
     
    } 
    private JPanel pan ; 
    } 
    class Panneau extends JPanel implements MousListener
    { public Panneau() 
    { photo = getToolkit().getImage("sans titre.gif") ; 
    } 
    public void paintComponent(Graphics g) 
    { super.paintComponent(g) ; 
    int x=10, y=10 ; 
    if(photo != null) 
    {g.drawImage (photo, x, y, this);System.out.println("photo");} 
    } 
    private Image photo = null; 
    } 
    // class TestMenu 
     
     
    //Public class MyMouseListener implements MouseListener {
     
     public void mousePressed(MouseEvent e) {
     
        }
     
        public void mouseReleased(MouseEvent e) {
     
        }
     
        public void mouseEntered(MouseEvent e) {
     
        }
     
        public void mouseExited(MouseEvent e) {
     
        }
     
        public void mouseClicked(MouseEvent e) {
          x=e.getX();
          y=e.getY();
        }
     
     
     
     
    { public static void main (String args[]) 
    { MaFenetre fen = new MaFenetre() ; 
    fen.setVisible(true) ; 
    } 
    }
    et voila les message d erreur que je recoi

    Class,interface,or enum expected
    pour les lignes en rouge

    j espere que j abuse pas de votre gentillesse et votre temps
    et merci bcq a +

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    plusieurs choses :

    1 - Je ne sais pas si tu a modifier le code avant de le coller ici mais j'ai l'impression qu'il manque des ligne
    2 - essai de donner ton code dans sa version complete
    3 - à la ligne "class Panneau extends JPanel implements MousListener" il manque le "e" de mouse
    4 - je vois pas les lignes en rouge dont tu parles

  9. #9
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    salut
    merci trop; merci
    voila le code mais ca marche tjs pas
    svp

    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
    53
    54
    55
    import javax.swing.* ; 
    import java.awt.* ; 
    import java.awt.event.*;
     
    class MaFenetre extends JFrame implements MouseListener 
     
    { MaFenetre () 
     
    { setTitle ("IMAGES") ; 
    setSize (800, 500) ; 
    pan = new Panneau() ; 
    getContentPane().add(pan) ; 
    pan.addMouseListener(new MyMouseListener(pan));
     
     
    } 
    private JPanel pan ; 
    } 
    class Panneau extends JPanel 
    { public Panneau() 
    { photo = getToolkit().getImage("sans titre.gif") ; 
    } 
    public void paintComponent(Graphics g) 
    { super.paintComponent(g) ; 
    int x=10, y=10 ; 
    if(photo != null) 
    {g.drawImage (photo, x, y, this);System.out.println("photo");} 
    } 
    private Image photo = null; 
    } 
     
     public void mouseClicked(MouseEvent ev)
      { int x = ev.getX() ;
        int y = ev.getY() ;
        System.out.println ("clic au point de coordonnees " + x + ", " + y ) ;
      }
      public void mousePressed (MouseEvent ev) {}
      public void mouseReleased(MouseEvent ev) {}
      public void mouseEntered (MouseEvent ev) {}
      public void mouseExited  (MouseEvent ev) {}
    }
     
        public void mouseClicked(MouseEvent e) {
          x=e.getX();
          y=e.getY();
        }
     
     
     public class essai aff1
     
    { public static void main (String args[]) 
    { MaFenetre fen = new MaFenetre() ; 
    fen.setVisible(true) ; 
    } 
    }
    j attend ta reponse merci et a +

  10. #10
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    Voici ton code un peu modifier (il faut que tu aprenne a coder propre se serait cool ...)

    Deja tu n'avais pas de setVisible(true) sur ta frame;
    ensuite j'ai enlever ta static void main il faut que tu la rajoute car moi j'ai fait des essai dans un programme que j'avais deja.

    Sa marche sa m'achine bien les coordonnées du point que je clique a toi d'ameliorer et de faire ce qu'il te reste a faire.

    ++

    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
     
     
    import javax.swing.* ;
    import java.awt.* ;
    import java.awt.event.*;
     
     
    class MaFenetre extends JFrame {
     
    	public MaFenetre ()  { 
     
    		setTitle ("IMAGES") ;
    		setSize (800, 500) ;
    		setVisible(true);
    		pan = new Panneau() ;
    		getContentPane().add(pan) ;
    		pan.addMouseListener(new MyMouseListener()); 
    	}
    	private JPanel pan ;
     
     
    class Panneau extends JPanel { 
    	public Panneau() { 
    		photo = getToolkit().getImage("sans titre.gif") ; } 
     
    	public void paintComponent(Graphics g) { 
    		super.paintComponent(g) ; 
    		int x=10, y=10 ;
    		if(photo != null) {
    			g.drawImage (photo, x, y, this);System.out.println("photo");
    			} 
    		} 
     
    	private Image photo = null; 
    	}   
     
    public class MyMouseListener implements MouseListener {
     
     
    public void mouseClicked(MouseEvent ev)  {
    	int x = ev.getX() ;
    	int y = ev.getY() ;
    	System.out.println ("clic au point de coordonnees " + x + ", " + y ) ; }
     
    public void mousePressed (MouseEvent ev) {}  
    public void mouseReleased(MouseEvent ev) {}  
    public void mouseEntered (MouseEvent ev) {}  
    public void mouseExited (MouseEvent ev) {}   
    }
     
    }

  11. #11
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    j ne peu pas te remercie suffisament pour ton aide! merci
    et bien voila le programme finale ca marche

    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
    53
    54
    55
    import javax.swing.* ;
    import java.awt.* ;
    import java.awt.event.*;
     
     
    class MaFenetre extends JFrame {
     
    	public MaFenetre ()  { 
     
    		setTitle ("IMAGES") ;
    		setSize (500,300) ;
    		setVisible(true);
    		pan = new Panneau() ;
    		getContentPane().add(pan) ;
    		pan.addMouseListener(new MyMouseListener()); 
    	}
    	private JPanel pan ;
     
     
    class Panneau extends JPanel { 
    	public Panneau() { 
    		photo = getToolkit().getImage("sans titre.gif") ; } 
     
    	public void paintComponent(Graphics g) { 
    		super.paintComponent(g) ; 
    		int x=10, y=10 ;
    		if(photo != null) {
    			g.drawImage (photo, x, y, this);System.out.println("photo");
    			} 
    		} 
     
    	private Image photo = null; 
    	}   
     
    public class MyMouseListener implements MouseListener {
     
     
    public void mouseClicked(MouseEvent ev)  {
    	int x = ev.getX() ;
    	int y = ev.getY() ;
    	System.out.println ("clic au point de coordonnees " + x + ", " + y ) ; }
     
    public void mousePressed (MouseEvent ev) {}  
    public void mouseReleased(MouseEvent ev) {}  
    public void mouseEntered (MouseEvent ev) {}  
    public void mouseExited (MouseEvent ev) {}   
    }
     
    }
    public class fat
    {public static void main(String args[])
    {MaFenetre fen=new MaFenetre();
    fen.setVisible(true);
    }
    }
    Merci encore une fois et a plus

  12. #12
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Dite moi, ca fait plusieurs fois que je vois pour des actions type mouse listener de choper tout les type d'action dessus (le clic pressé, relaché ...), même si aucun traitement n'est fait dessus.
    Cela change quelque chose de ne pas les choper du tout ?

  13. #13
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Ce qui est possible de faire c'est d'étendre la classe MouseAdapter au lieu d'implémenter l'interface MouseListener. Ainsi, tu ne redéfinit que la(les) méthode(s) dont tu as vraiment besoin. Les autres ayant un corps vide
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  14. #14
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Oughh j'avais pas fais attention que la class avait été redéfinis, désolé ^^.

  15. #15
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    salut
    apres avoir resolu le problemes des cordonnes maintenant je dois les stocker ds un vecteur mais ca marche pas si qlq un peu m aider voila le code
    merci d avance

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import javax.swing.* ;
    import java.awt.* ;
    import java.awt.event.*;
    import java.util.Vector;
     
     
    class MaFenetre extends JFrame {
     
    	public MaFenetre ()  { 
     
    		setTitle ("IMAGES") ;
    		setSize (500,300) ;
    		setVisible(true);
    		pan = new Panneau() ;
    		getContentPane().add(pan) ;
    		pan.addMouseListener(new MyMouseListener()); 
    	}
    	private JPanel pan ;
     
     
    class Panneau extends JPanel { 
    	public Panneau() { 
    		photo = getToolkit().getImage("imp.gif") ; } 
     
    	public void paintComponent(Graphics g) { 
    		super.paintComponent(g) ; 
    		int x=10, y=10 ;
    		if(photo != null) {
    			g.drawImage (photo, x, y, this);System.out.println("photo");
    			} 
    		} 
     
    	private Image photo = null; 
    	}   
     
    public class MyMouseListener implements MouseListener {
     
     
    public void mouseClicked(MouseEvent ev)  {
    	int x = ev.getX() ;
    	int y = ev.getY() ;
    	System.out.println ("clic au point de coordonnees " + x + ", " + y ) ; }
     
    public void mousePressed (MouseEvent ev) {}  
    public void mouseReleased(MouseEvent ev) {}  
    public void mouseEntered (MouseEvent ev) {}  
    public void mouseExited (MouseEvent ev) {}   
    }
     
    }
     
    public class EssaiListe {
    private static Vector v = new Vector();
     
    public static void lister() {
     for (int i =0 ; i< v.size() ; i++) 
       System.out.println( "élément N°"+i+" : "+ v.elementAt(i) );
     System.out.println();
    }
    public class fat
    {public static void main(String args[])
    {MaFenetre fen=new MaFenetre();
    fen.setVisible(true);
    /*v.addElement("x");
     v.addElement("y"); 
     lister();*/
     }

  16. #16
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    voila mon probleme en claire:
    je veux stocker mes cordonnes de click sous forme de vecteur apres avoir fini
    alors comment faire ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/03/2008, 11h13
  2. problème avec Click droit de la souris
    Par patou41000 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 22/05/2007, 10h32
  3. Réponses: 1
    Dernier message: 19/09/2006, 09h49
  4. Limite de contour avec la souris
    Par MarKo04 dans le forum Delphi
    Réponses: 6
    Dernier message: 23/08/2006, 12h21
  5. Click de souris avec son
    Par faten7 dans le forum C++Builder
    Réponses: 13
    Dernier message: 25/04/2006, 22h27

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