Bonjour,
Je suis entrain de faire une sorte de poster interactif qui s'animerai lorsqu'on clique sur l'une des lettres du poster.
Afin de faire cela j'ai choisi de mettre des images de ces lettres, un gif qui s'activerai lorsqu'une personne clique sur la lettre, et une image de la lettre après le gif (qui une fois terminé ne changerait plus du tout !).
Cependant j'ai un soucis, lorsqu'il y a une seul lettre ça marche très facilement mais lorsqu'il y a plusieurs lettre lorsqu'on enclenche la première puis quelques secondes plus tard la seconde, la seconde affiche son gif au même moment que la première. Lorsque je flush le gif de la seconde s'affiche normalement mais du coup la première s'arrête ...
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 package Poster; import javax.swing.JFrame; import javax.swing.JPanel; public class Lettre { private static final int JPANEL_LARG_INT = 600; private static final int JPANEL_HAUT_INT = 600; public final JPanel pageUn = new JPanel(); public static JFrame interfaceDeTest = new JFrame("Test UNTITRERANDOM"); public static void main (String[] args){ interfaceDeTest.setLayout(null); interfaceDeTest.setSize(JPANEL_LARG_INT, JPANEL_HAUT_INT); interfaceDeTest.setLocationRelativeTo(null); interfaceDeTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); CreationImageRapide image1 = new CreationImageRapide(600,0,"./image/B.png","./image/B2.png","./video/B.gif"); image1.UtilisationImageRapide(); CreationImageRapide image2 = new CreationImageRapide(600,300,"./image/B.png","./image/B2.png","./video/B.gif"); image2.UtilisationImageRapide(); interfaceDeTest.setResizable(false); interfaceDeTest.setVisible(true); } }
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 package Poster; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Timer; import static Poster.Lettre.interfaceDeTest; public class CreationImageRapide { private Timer timer; public ImageSeule image1, image2, video; public CreationImageRapide(final int hauteur, final int largeur, String lienImage1, final String lienImage2, final String lienVideo) { this.image1 = new ImageSeule(hauteur,largeur,lienImage1); this.image2 = new ImageSeule(hauteur,largeur,lienImage2); this.video = new ImageSeule(hauteur,largeur,lienVideo); this.timer = null; } public void UtilisationImageRapide() { interfaceDeTest.add(image1.label); image1.label.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { video.icone.getImage().flush(); video.label.setIcon(video.icone); interfaceDeTest.add(video.label); image1.label.setVisible(false); timer = new Timer(5000, new ActionListener() { public void actionPerformed(ActionEvent e) { interfaceDeTest.add(image2.label); video.label.setVisible(false); } }); timer.start(); timer.setDelay(5000); } }); } }
Voilà les 3 classes que j'ai créé, avez vous une idée afin de me débloquer ?
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 package Poster; import javax.swing.ImageIcon; import javax.swing.JLabel; public class ImageSeule { int basDeLimage; int gaucheDeLimage; JLabel label; String lien; ImageIcon icone; public ImageSeule(int hauteur, int largeur, String lien){ this.basDeLimage = hauteur; this.gaucheDeLimage = largeur; this.lien = lien; this.label = new JLabel(); this.icone = new ImageIcon(lien); this.label.setIcon(icone); this.label.setBounds(this.gaucheDeLimage, 1, 300, this.basDeLimage); } }
Merci d'avance !
Partager