Bonjour à tous,
J'ai créé un programme qui fait quelques traitements d'images et j'ai besoin d'utiliser une JProgressBar.
Voici une partie du programme, regardez bien les trois lignes en rouge :
Voici la classe qui crée la bare de progression :
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 public void CreeDescripteur(String filepath) { int pr=0; try{ BufferedReader buff1 = new BufferedReader(new FileReader(filepath)); try { String li; while ((li = buff1.readLine()) != null) pr++; } finally { buff1.close(); } } catch (IOException ioe) { System.out.println("Erreur --" + ioe.toString()); } // la variable pr contient le nombre d'images à traiter try { BufferedReader buff2 = new BufferedReader(new FileReader(filepath)); try { String line; int j=0; BareProgress bp=new BareProgress(pr); while ((line = buff2.readLine()) != null) { try { j++; img=(ImageIO.read(new File(line))); } catch (IOException ioe) { } Traitement(); bp.majProgress((j*100)/pr); } } finally { buff2.close(); } } catch (IOException ioe) { System.out.println("Erreur --" + ioe.toString()); } }
Le problème est que je ne vois pas le changement dans la barre de progression dans le cas ou on passe d'un traitement à un autre.
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 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; public class BareProgress extends JFrame { public JProgressBar jpb = new JProgressBar(); private JTextField jtfFrom = new JTextField(); private JLabel jl=new JLabel(); public BareProgress(int max) { JPanel jPanel2 = new JPanel(); jPanel2.setLayout(new BorderLayout()); jPanel2.setBorder(new TitledBorder("From")); jPanel2.add(jtfFrom, BorderLayout.CENTER); this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); JPanel jPanel1 = new JPanel(); jPanel1.setLayout(new GridLayout(2, 1)); jPanel1.add(jPanel2); this.add(jpb, BorderLayout.NORTH); this.add(jPanel1, BorderLayout.CENTER); jpb.setStringPainted(true); // Paint the percent in a string jpb.setMinimum(0); jpb.setMaximum(max); setTitle("CopyFile"); setSize(300, 180); setVisible(true); } public void majProgress (int val) { jpb.setValue (val); } }
Merci pour votre aide.
Partager