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

EDT/SwingWorker Java Discussion :

Pour connaisseur des évements "MouseEvent"


Sujet :

EDT/SwingWorker Java

  1. #1
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut Pour connaisseur des évements "MouseEvent"
    Bonjour à tous,

    j'ai créé une "ContentPane" dans ma classe "MyWindow", intégrant 4 images, que je souhaite déplacer à la souris.
    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
    68
    69
    70
    71
    72
     
    import java.awt.Color;
    import java.awt.Point;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    @SuppressWarnings("serial")
    public class MyWindow extends JFrame   {
     
    	// MES VARIABLES 	
    	int x,y;
    	JLabel pan2 = new JLabel();
    	Point p = new Point  (); // coordonées x et y nommées p.x et p.y
    	static PanListener ecouteur = new PanListener();
    	static JLabel image1, image2, image3, image4 ;
    	//EcouteSouris ecoute1 = new EcouteSouris();
     
    	public MyWindow (String string)   { // mon constructeur de fenetre
     
    		/* la fenetre est :
    		 * toujours visible, au premier plan,
    		 * de taille 500x500,
    		 * se ferme quand on clique sur la croix,
    		 * sont centrées sur l'écran.
    		*/
    		super ();
    		this.setTitle(string);
    		this.isAlwaysOnTop();		
    		this.setSize(500, 500);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    		this.setVisible(true);
     
     
    		// on créé un "pan2"  de type ContenPane , sans organisation de dépot d'objet.
    		  // CONSTRUCTEUR PAN2
    			pan2.setBackground(Color.gray);
    	        pan2.setLayout(null);
    	        this.setContentPane(pan2);
     
     
     
        	/* pour chaque valeur de i (chaque image), on 
        	 *  - charge l'image grâce à la fonction "afficheTete()"
        	 *  - met une localisation x et y
        	 *  - met l'image au format 150x150
        	 *  - on affiche l'image sur le "pan"
        	 *  -on affiche le suivi sur la console
        	 */
        	for (int i = 1; i<5; i++) {
        		JLabel image = (ChargeTete.affiche(i) );
     
        		x = 150 * i;
    			y = 150*i ;
    			image.setName("image"+i);
    			image.setLocation(x, y);
    			image.setSize(150,150);
    			image.addMouseMotionListener( ecouteur);
    			image.addMouseListener(ecouteur);
     
    			pan2.add(image );
     
    			System.out.println("nom de l'image : " + image.getName()  );
    			System.out.println("x voulu" + i + " = " + x  );
    			System.out.println("y voulu" + i + " = " + y );
     
    			System.out.println(image.getLocation(p)+ "\n");
    			System.out.println(pan2.getLayout()  + "\n");
        	}
        		// on repeint le panneau pour tout afficher.
        		pan2.repaint();
    J'ai réalisé un "écouteur", par l'intermédiaire de la classe "MyListener".
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    import java.awt.Color;
     
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class PanListener  implements MouseListener, MouseMotionListener {
     
    	boolean b1 = false ;
    	  int x1, y1;
     
     
    	@Override
    	public void mouseDragged(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void mouseMoved(MouseEvent e) {
    		System.out.println("j'ai bougé la souris.....");
     
    			int newX, newY ;
     
    					if  (e.getComponent() ==   MyWindow.image1) { 
    						System.out.println("j'ai bougé image 1.");
    							int x2 = e.getX();
    							int y2 = e.getY();
    							if (b1 && (x2!= x1) && (y2!=y1)) {
    									int dx = x2-x1;
    									int dy = y2-y1;
     
     
    									newX = MyWindow.image1.getX() + dx ;
    									newY = MyWindow.image1.getY() + dy ;
     
    									MyWindow.image1.setLocation(newX, newY);
     
    									x1 = x2;
    									y1 = y2;
    							}
    					}
    					else {
    					System.out.println("pas image 1."); 
    					}
     
     
    	}
     
     
     
     
    	@Override
    	public void mouseClicked(MouseEvent e) {
    		System.out.println("j'ai cliqué et relaché la souris.....");
     
    	}
    	@Override
    	public void mousePressed(MouseEvent e) {
    		System.out.println("j'ai cliqué sur la souris.....");
    		b1 = true ;
    		x1 = e.getX()  ;
    		y1 = e.getY();
     
    	}
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		System.out.println("j'ai rélaché  la souris.....");
    		b1 = false ;
     
    	}
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
     
    	}
    J'associe mon "ecouteur" à mes images pendant leur construction.

    Quand je déplace la souris sur une image ( entre 1 et 4) la console affiche bien le message qui indique que la souris bouge sur l'image écoutée.

    Cependant, quand je bouge le souris sur l'image1, la comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @Override
    	public void mouseMoved(MouseEvent e) {
    		System.out.println("j'ai bougé la souris.....");
     
    			int newX, newY ;
     
    					if  (e.getComponent() ==   MyWindow.image1) { 
    						System.out.println("j'ai bougé image 1.");
    devrait se vérifier et m'afficher que l'on bouge bien sur l'image1.
    Cela ne semble pas être vu.

    j'ai essayé if (e.getSource()............ et if(e.getComponent()........

    La syntaxe est-elle correcte ou y-a-t-il un élément qui m'échappe?

    Merci à tous ceux qui se pencheront sur mon code....

  2. #2
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut
    j'ai eu beaucoup de visualisations mais peu de réponses....

    après pas ma de temps, j'ai résolu mon problème.

    En fait l'image1 de la classe MyWindow était mal référencée et sortait non définie (null) au moment de la comparaison avec l'objet cliqué.

    Après révision du code, cela fonctionne...

    A bientôt pour d'autres questions...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pour connaisseur des TMEMO
    Par patdu26 dans le forum Delphi
    Réponses: 7
    Dernier message: 21/04/2020, 16h20
  2. [Shell][sed]utilisation d'un sed pour gérer des doubles quotes
    Par bstevy dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 06/03/2015, 11h03
  3. [XML]Protection des doubles quotes
    Par DarkNagash dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 27/04/2006, 10h59
  4. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13

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