tu ne serais pas occupé de mélanger du swing et du SWT là?? Toutes les informations qu'on t'as données concernent swing.
tu ne serais pas occupé de mélanger du swing et du SWT là?? Toutes les informations qu'on t'as données concernent swing.
Oui, je me suis trompé, j'ai changé pour un JProgressBar, cela va beaucoup mieu désormais.
Autant pour moi.
Cependant, j'ai un soucis, j'ai réussi à placer mon JProgressBar sur ma fenêtre, j'arrive à le faire incrémenter ( Thread.sleep(100); par exemple), mais lorsque que je veux activer le chargement via un bouton ( Listener ), il fait le traitement en arrière plan.
J'avais trouvé un post identique sur le forum, mais je ne le retrouve plus :s :s.
Je peux hélas pas poster le code avant 18h.
Mais si cela peux vous aider, j'ai adapter ce code la (exemple java2s ) :donc je l'ai placé dans un listener, mais il exécute la tache en arrière plan, ne retrouvant pas le post, avez vous uneidée ? ( je continu à chercher néanmoins).
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 public class Main extends JPanel { JProgressBar pbar; static int min = 0; static int max = 100; public Main() { pbar = new JProgressBar(); pbar.setMinimum(min); pbar.setMaximum(max); add(pbar); JFrame frame = new JFrame("Progress Bar Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(this); frame.pack(); frame.setVisible(true); for (int i = min; i <= max; i++) { final int percent = i; try { SwingUtilities.invokeLater(new Runnable() { public void run() { updateBar(percent); } }); Thread.sleep(100); } catch (InterruptedException e) { } } } public void updateBar(int newValue) { pbar.setValue(newValue); } public static void main(String args[]) { new Main(); } }
Merci
Faut lancer ta boucle dans un thread ?
Et bien entendu laisser le invokeLater sur le composant swing que tu fais les setValue().
Sinon je ne vois rien de suspect en executant ton code.
Voila le bout de code de ma ProgressBar :
!
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 int min = 0; int max = 0; // ... for (int k = min; k <= max; k++) { final int percent = k; try { SwingUtilities.invokeLater(new Runnable() { public void run() { updateBar(percent); } }); Thread.sleep(50); }catch (InterruptedException e1) { } } } private void updateBar(int newValue) { bar.setValue(newValue); if (newValue==100) { System.out.println("*** CHARGEMENT TERMINE ***"); Thread.setDefaultUncaughtExceptionHandler(null); }
Je bosse sur la boucle en ce moment même.
Sinon pour le reste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 boutonExec.setActionCommand("boutonOK"); boutonExec2.setActionCommand("boutonTest"); itemCfg.setActionCommand("Configurer"); itemConnect.setActionCommand("boutonOK");
correspondent les méthodes suivantes :
puis ma classe qui "parse" mon fichier xml de configuration :
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 public void actionPerformed(ActionEvent aActionEvent) { String action = aActionEvent.getActionCommand(); if(action.equals("Configurer")) { if(this.chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { this.textChemin.setText(this.chooser.getSelectedFile().getAbsolutePath()); } } if(action.equals("boutonOK")) { try { Runtime.getRuntime().exec(new String[] {chemin, "C:\\Users\\pendoRa\\Music\\son\\LIFE.mp3" } ); } // "http://pendora.fr.nf:8000/listen.pls" catch (IOException aIOException) { JOptionPane.showMessageDialog(this, aIOException.getMessage(), "Erreur", JOptionPane.ERROR_MESSAGE); } } if(action.equals("boutonTest")) { xpa = null; try { xpa = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("config.xml"))); ((XMLEncoder) xpa).writeObject(textChemin); } catch(FileNotFoundException e1) { e1.printStackTrace(); } ((XMLEncoder) xpa).close(); Exception exception1; ((XMLEncoder) xpa).close(); return; } if(action.equals("XML")) { System.out.println("ligne lu dans le xml : "); SAXBuilder sxb = new SAXBuilder(); Document document = null; try { document = sxb.build(new File("config.xml")); org.jdom.Element racine = document.getRootElement(); XPath xpa = null; xpa = XPath.newInstance("//string"); System.out.println(xpa.valueOf(racine)); chemin = xpa.valueOf(racine); System.out.println(chemin); } catch(JDOMException e1) { e1.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } return; } }
Attention, je ne demande pas de me "faire" mon code, je post juste au cas ou des améliorations seraient nécéssaire. Car pour le moment, j'ai quelques problème de fonctionnement. Mais je souhaite juste pour le moment obtenir de l'aide sur ma progressBar ( cf : image jointe ).
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 public static class MyTools { public void emplacement(String chemin, String textChemin) { try { Runtime.getRuntime().exec(new String[] { chemin, textChemin }); } catch(IOException e) { e.printStackTrace(); } } public static String emplacement(String chemin) { SAXBuilder sxb = new SAXBuilder(); Document document = null; try { document = sxb.build(new File("config.xml")); org.jdom.Element racine = document.getRootElement(); XPath xpa = null; xpa = XPath.newInstance("//string"); System.out.println(xpa.valueOf(racine)); chemin = xpa.valueOf(racine); } catch(JDOMException e1) { e1.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } return null; } public MyTools() { } }
( ps : la JList je ferais en dernier la correspondance, juste un le lien JButton => ProgressBar m'aiderai ! )
ps 2 : ne pas faire attention à l'aspect graphique de l'appli
Merci a vous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager