Mais tu n'as pas bien saisi la différence : le temps de calcul pour la progress bar est le nombre d'opérations que toi tu fais, peu importe la plateforme concernée.
ça sera effectivement plus rapide sur certaines machines que sur d'autres, mais pour un % donné de la progress bar, les mêmes instructions auront été effectuées quelque soit la machine. Il n'est pas question de calculer le temps en fonction des machines, mais juste de dire qu'à tel moment de ton code, ça fait x % du programme chargé, et ceci uniquement en fonction de tes appels de méthodes, etc, comme j'ai donné des exemples avant. Après oui ce pourcentage sera surement atteint plus ou moins rapidement selon les machines.
J'sais pas si t'as une boucle for (int i =0; i<100; i++) { progress = i; ...}, tu as décidé qu'à chaque fois que i est incrémenté, ton pourcentage d'accomplissement vaut i. Tu as calculé un % d'avancement quelque soit la machine.
getLengthOfTask() n'existe pas, c'est à toi de calculer la progression dans doInBackground(). Faut hériter de SwingerWorker etc. Quand tu regardes le code complet de l'exemple, tu vois bien que le getLengthOfTask n'existe pas : http://java.sun.com/docs/books/tut [...] rDemo.java, l'appel est progressBar = new JProgressBar(0, 100); et non pas progressBar = new JProgressBar(0, task.getLengthOfTask());
Toujours dans l'exemple, le pourcentage de progress est calculé dans doInBackground(), c'est la variable progress. Ensuite tu en tiens compte avec setProgress et le sleep n'est là que pour qu'on voit la barre se charger, sinon ça irait trop vite et on ne verrait pas la barre se charger.