Je souhaite, après un clic sur un bouton, vérifier dans un dossier si une image est existante, si elle l'est je l'affiche puis je vérifie si l'image suivante est présente.
Un exemple est plus parlant, en fait je regarde si Canard1.jpg est présente dans le dossier E:/photos/ si elle l'est je l'affiche pendant 4 seconde, puis je recherche si Canard2.jpg est existente, si elle l'est je l'affiche pendant 4sec, pareil avec Canard3.jpg, et ainsi de suite.
Le problème c'est que mes images ne s'affiche que quand la boucle for est finie
J'ai une classe Fenetre Visualisation qui contient le code d'affichage de la fenetre et la methode qui test l'existence de l'image.
Une classe AffichageImage qui hérite de Canvas qui permet d'afficher l'image.
Et une classe attente qui hérite de thread qui me permet de faire la pause de 4sec.
la classe FenetreVisualisation :
La classe AffichageImage:
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 package essaivisualisation; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.io.File; public class FenetreVisualisation extends javax.swing.JFrame { Image img; String fichier; int i=1; File file; Attente attente=new Attente(); public FenetreVisualisation() { initComponents(); } public void testExistenceImage(){ for(int j=0;j<5;j++){ fichier="E:\\photos\\Canard"+i+".jpg"; System.out.println("fichier: "+fichier); file=new File(fichier); if (file.exists()==true){ AffichageImage image = new AffichageImage(fichier); this.add(image); attente.attendre(4000); System.out.println("image "+i+" existence"); i++; } } } private void initComponents() { //contient le code généré par netbeans que j'ai supprimer pour le forum} private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { testExistenceImage(); } // Variables declaration - do not modify private javax.swing.JButton jButton1; // End of variables declaration }
La classe attente:
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 package essaivisualisation; import java.awt.Canvas; import java.awt.*; import java.awt.Image; import java.awt.Toolkit; public class AffichageImage extends Canvas { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int largeurEcran = screenSize.width; int hauteurEcran = screenSize.height; Image image; public AffichageImage(String url) { image = getToolkit().getImage(url); prepareImage(image, this); } public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } public boolean imageUpdate(Image image, int info, int x, int y, int l, int h) { if ((info & (WIDTH | HEIGHT)) != 0) { setSize(l, h); getParent().getParent().getParent().getParent().setBounds( (largeurEcran - l) / 2, (hauteurEcran - h) / 2, l+8, h+32 ); } if ((info & (ALLBITS)) != 0) { repaint(); return false; } else { return true; } } }
et le main:
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 package essaivisualisation; public class Attente extends Thread { int attente; public Attente() { } void attendre(int attente){ try { this.sleep(attente); } catch (InterruptedException ex) { ex.printStackTrace(); } } }
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 package essaivisualisation; public class Main { public Main() { } public static void main(String[] args) { FenetreVisualisation fen=new FenetreVisualisation(); fen.setVisible(true); } }
Partager