Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

thread et barre de progression

5 réponses
Avatar
Sylvie MOREL
Bonjour,

j'aimerai visualiser la progression d'un thread à l'aide d'une barre de
progression. J'ai donc créé un panel ProgressOnOff dans lequel j'ai
inséré une barre de progression et un bouton Stop qui me permet
d'arrêter proprement le thread, j'ai créé une deuxième classe
OnOffThread (le thread) qui exécute un appel système dans la méthode run.

Le problème c'est que ma fenêtre n'apparait qu'à la fin de l'exécution.
Voici mon code:

JDialog frame = new JDialog(this, "Barre de progression");
ProgressOnOff newContentPane = new ProgressOnOff(); // créé panel
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
frame.setVisible(true);
frame.pack();
frame.show();
newContentPane.start(); // permet de lancer le thread
------------------------------------------------

classe ProgressOnOff......

public ProgressOnOff() {

progressBar = new JProgressBar ();
stopButton = new JButton("Arrêter");
stopButton.addActionListener(this);

task = new OnOffThread ();

add(....) // ajout de tous les composants

timer = new Timer(ONE_SECOND, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (task.isDone()) {
Toolkit.getDefaultToolkit().beep();
timer.stop();
stopButton.setEnabled(false);
progressBar.setValue(progressBar.getMinimum());
progressBar.setString(""); //hide % string
if (progressBar.isIndeterminate())
progressBar.setIndeterminate(false);
}
}
});
}


public void start(){
progressBar.setIndeterminate(true);
task.run();
timer.start();
}
----------------------------------------------

Merci beaucoup :-)

5 réponses

Avatar
TestMan
"Chez casto, ya tout's'ki faut ..."
Enfin, plutot chez Sun ...
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html

A toi d'adapter ça à ton besoin exact ;-)

Voili ...

-SLK

"Sylvie MOREL" a écrit dans le message de
news:
Bonjour,

j'aimerai visualiser la progression d'un thread à l'aide d'une barre de
progression. J'ai donc créé un panel ProgressOnOff dans lequel j'ai
inséré une barre de progression et un bouton Stop qui me permet
d'arrêter proprement le thread, j'ai créé une deuxième classe
OnOffThread (le thread) qui exécute un appel système dans la méthode run.


Avatar
Sylvie MOREL
ben le problème c'est que j'ai effectivement pris quelques bouts de code
du site pour faire ce que je voulais mais le problème c'est que je
comprend pas pourquoi ma fenêtre n'apparait qu'à la fin de l'exécution
du thread (ce qui est un peu inutile pour moi :-().

TestMan wrote:
"Chez casto, ya tout's'ki faut ..."
Enfin, plutot chez Sun ...
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html

A toi d'adapter ça à ton besoin exact ;-)

Voili ...

-SLK

"Sylvie MOREL" a écrit dans le message de
news:

Bonjour,

j'aimerai visualiser la progression d'un thread à l'aide d'une barre de
progression. J'ai donc créé un panel ProgressOnOff dans lequel j'ai
inséré une barre de progression et un bouton Stop qui me permet
d'arrêter proprement le thread, j'ai créé une deuxième classe
OnOffThread (le thread) qui exécute un appel système dans la méthode run.







Avatar
Sylvie MOREL
j'ai trouvé où ca bloquait. Lorsque que je lançais le thread je faisais:
thread.run(). J'ai remplacé par thread.start() et ca marche bien.

Par contre, on fait comment pour arrêter le thread? j'ai essayé
interrupt, stop.... mais mon exécution continue quand même à s'exécuter
(j'ai regardé dans le gestionnaire des taches sous Windows :-()....

Merci

Sylvie MOREL wrote:
ben le problème c'est que j'ai effectivement pris quelques bouts de code
du site pour faire ce que je voulais mais le problème c'est que je
comprend pas pourquoi ma fenêtre n'apparait qu'à la fin de l'exécution
du thread (ce qui est un peu inutile pour moi :-().

TestMan wrote:

"Chez casto, ya tout's'ki faut ..."
Enfin, plutot chez Sun ...
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html

A toi d'adapter ça à ton besoin exact ;-)

Voili ...

-SLK

"Sylvie MOREL" a écrit dans le message de
news:

Bonjour,

j'aimerai visualiser la progression d'un thread à l'aide d'une barre de
progression. J'ai donc créé un panel ProgressOnOff dans lequel j'ai
inséré une barre de progression et un bouton Stop qui me permet
d'arrêter proprement le thread, j'ai créé une deuxième classe
OnOffThread (le thread) qui exécute un appel système dans la méthode
run.











Avatar
Nicolas Delsaux
Le 17.07 2003, Sylvie MOREL s'est levé(e) et s'est dit
"tiens, je vais écrire aux mecs de fr.comp.lang.java"

j'ai trouvé où ca bloquait. Lorsque que je lançais le thread je
faisais: thread.run(). J'ai remplacé par thread.start() et ca marche
bien.

Par contre, on fait comment pour arrêter le thread? j'ai essayé
interrupt, stop.... mais mon exécution continue quand même à
s'exécuter (j'ai regardé dans le gestionnaire des taches sous Windows
:-()....

C'est la tâche Java qui continue de s'exécuter, ou ton thread ? Si c'est

simplement la tache Java, c'est probablement parce que tu n'as pas fait de
setDefaultCloseOperation(DISPOSE_ON_CLOSE)

--
Nicolas Delsaux
"S'il existe deux ou plusieurs manières de faire quelque chose et que l'une
de ces manières est susceptible de se solder par une catastrophe, on peut
être certain que quelqu'un se débrouillera pour la choisir."
Edward A.Murphy Jr

Avatar
Sylvie MOREL
Dans la méthode run de mon thread, j'exécute un appel système (j'exécute
une application onOff.exe qui me permet d'effectuer des calculs). Cette
application peut prendre des semaines pour se terminer. J'aimerai bien
l'arrêter.

J'espère avoir été un peu plus prise :-).

Merci beaucoup

Nicolas Delsaux wrote:
Le 17.07 2003, Sylvie MOREL s'est levé(e) et s'est dit
"tiens, je vais écrire aux mecs de fr.comp.lang.java"


j'ai trouvé où ca bloquait. Lorsque que je lançais le thread je
faisais: thread.run(). J'ai remplacé par thread.start() et ca marche
bien.

Par contre, on fait comment pour arrêter le thread? j'ai essayé
interrupt, stop.... mais mon exécution continue quand même à
s'exécuter (j'ai regardé dans le gestionnaire des taches sous Windows
:-()....



C'est la tâche Java qui continue de s'exécuter, ou ton thread ? Si c'est
simplement la tache Java, c'est probablement parce que tu n'as pas fait de
setDefaultCloseOperation(DISPOSE_ON_CLOSE)