Bonjour,

Je commence tout juste le swing mais j'ai un drôle de problème que je n'arrive pas résoudre depuis bientot 4 jours.
J'ai crée un projet simpliste où le problème est toujours présent.
J'ai une fonction déplacement qui crée un pion et le déplace.

Il se trouve que quand j'envoie la fonction de déplacement à partir du main, tout se passe bien: le pion se crée, il bouge, il s'arrete.

Si je lance la fonction quand je relâche la souris (soit mouseReleased) la fenêtre attend la fin de la fonction mouseRelesed pour se mettre à jour(le pion apparais directement à sa position d'arrivée).
J'en suis sûr car j'ai rajouté un Scanner pour bloquer la fonction mouseRealeased et je vois bien que tant que je n'est rien rentré en ligne de commande, tout reste figé dans ma fenêtre.
Voici le code:
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
 
package Pandemie;
import java.awt.Label;
import java.awt.Point;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
 
import javax.swing.JFrame;
import javax.swing.JLabel;
 
import Joueur.Joueur;
import Ville.Ville;
 
public class Pandemie {
	public static Hashtable<String, Ville> Monde;
	public static List<Joueur> Joueurs;
	public static Fenetre fen;
	public static JLabel [] Labels={null,null,null,null}; 
        public static void main(String[] args){
        	fen = new Fenetre();
            //fen.Deplacement_pion(new Point (50,50));// marche
 
           // deplacement(new Point (50,50)); //marche
        }
		private static void deplacement(Point point) {
			//fen.Deplacement_pion(new Point (50,50));
 
		}
 
}
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
package Pandemie;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Point;
 
 
 
public class Map extends JPanel {
	Image img ;
	static Point clic;
		public Map(){ 
			try {
				img = ImageIO.read(new File("Plateau.jpg"));
	            addMouseListener(new Moustener());
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
        public void paintComponent(Graphics g){
        	super.paintComponents(g);
            g.drawImage(img, 2, 2,1436,902,this);
        }               
        public class Moustener extends MouseAdapter
        {
            public void mouseReleased(MouseEvent evt)
           {
              int xClic = evt.getX();
              int yClic = evt.getY();
 
	          clic=new Point(xClic,yClic);
	          Deplacement_pion(new Point(50,50));
	          Scanner sc = new Scanner(System.in);
	          String choix = sc.nextLine();
	          System.out.println(choix);
           }
        }
    	public void Deplacement_pion(Point Clic){
 
    	 	JLabel label = new JLabel();
    	 	ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().getImage("pion1.png"));
    	 	label.setPreferredSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
    	 	label.setIcon(image);
 
     		label.setPreferredSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
     		label.setIcon(image);
 
     		add(label);
            label.setBounds(100,100,80,30);
     		int i;
    	 	for( i = 0; i < 100; i++)
    	    {
 
    	 		label.setLocation(50+i,50+i);
    	 		this.revalidate();
    	 		this.repaint();
    	 		label.revalidate();
    	 		label.repaint();
    	 		try {
    	            Thread.sleep(20);
    		    } catch (InterruptedException e) {
    		        e.printStackTrace();
 
    	        }
 
    		}
 
 
    	}
}
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
 
package Pandemie;
 
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
 
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
import Joueur.Joueur;
import Ville.Ville;
 
public class Fenetre extends JFrame{
 
     public Fenetre(){
         this.setTitle("Test");
         this.setLocationRelativeTo(null);
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setExtendedState(this.MAXIMIZED_BOTH);
         this.setUndecorated(true);
         this.setContentPane(new Map());
         this.setLayout(null);
         this.setVisible(true);
 
 
     }
 
 
 
}
Cela fait trop longtemps que je reste bloqué sur cette bétise...
Merci de votre aide!


edit: même pb pour eclipse et Netbeans