Bonjour,
j'ai placé au milieu d'un JPanel un JLabel et j'aimerais le voir se deplacer d'un point à un autre lorsque j'actionne une action à l'aide d'un menuitem.
voici le code que j'ai écrit:
le deplacement s'effectue bien lors de la derniere instruction de mon main, je le vois bien se faire à l'ecran.
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 public class Test extends JPanel { JLabel p; public Test() { setPreferredSize(new Dimension(512, 512)); setBackground(Color.WHITE); setLayout(null); p = new JLabel(new ImageIcon("image.gif")); p.setBounds(200, 200, 64, 64); add(p); } private void deplacement() { for (int i = 200; i < 400; i++) { p.setLocation(i, i); try { Thread.sleep(5); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { final Test t = new Test(); JFrame fenetre = new JFrame(); fenetre.getContentPane().setLayout(new BorderLayout()); fenetre.getContentPane().add(t, BorderLayout.CENTER); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("MENU"); JMenuItem item = new JMenuItem("test"); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { t.deplacement(); } }); menu.add(item); menuBar.add(menu); fenetre.setJMenuBar(menuBar); fenetre.pack(); fenetre.setVisible(true); t.deplacement(); } }
par contre, lorsque je l'actionne à l aide du menu, je ne le vois plus, alors qu'il s'effectue bien (si je mets un println dans ma boucle for, je vois dans la console que la boucle s'effectue bien).
Comment puis-je faire pour forcer l'affichage à chaque passage dans la boucle?
Partager