2013-02-09 4 views
2

Je suis en train de jouer avec un ProgressBar pour la première fois. Je veux garder un enregistrement du fil en utilisant un ProgressBar --- J'ai regardé this mais cela n'a pas aidé.Comment voir la progression du fil en utilisant progressBar

Est-ce que quelqu'un sait comment faire cela?

J'ai essayé d'utiliser les octets du fichier mp3 pour mettre à jour progressBar mais j'ai échoué. Je veux utiliser le fil que j'utilise pour lire le fichier mp3.

Ceci est une capture d'écran du lecteur mp3.

The mp3 player I'm working on

+0

Vous lisez déjà le tutoriel. Que pouvons-nous y ajouter? Comment ça n'a pas aidé? Quel est le problème? Avez-vous essayé quelque chose? Où est le code? –

Répondre

1

Le problème habituel est que vous avez également besoin GUI appropriée lors de la mise à jour actualise la valeur de la barre de progression. J'ai fait un chargement asynchrone avec une barre de progression il y a quelque temps, où j'ai utilisé exactement ce tutoriel. Notez que, avec les fichiers audio compressés, l'utilisation de compteurs d'octets peut ne pas être précise, sans effectuer une décompression complète au début, ce qui pourrait ne pas être ce que vous voulez.

Il est essentiel bien sûr, que vous définissez la valeur de la barre de progression et min & max en utilisant de manière appropriée le constructor et/ou setMaximum(), setMinimum() et setValue(), avant de commencer à jouer, par exemple

progressBar.setMinimum(0); 
progressBar.setMaximum(totalTime); 
progressBar.setValue(0); 

mais pas

progressBar.setValue(elapsedTime); 

de votre thread de travail, utilisez l'interface PropertyChangeListener et setProgress() de SwingWorker à partir de l'instance des travailleurs comme dans l'exemple suivant. adapter uniquement le code à vos besoins:

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java

+0

Je pensais à surveiller le fil en utilisant le fil --- mais cela semble impossible car il faudrait savoir combien de temps le fil fonctionnera. J'ai décidé d'utiliser une bibliothèque supplémentaire pour obtenir la balise Id3v2 --- l'utiliser pour trouver la longueur du fichier mp3. Je vais avoir un thread supplémentaire qui va continuer à se replanifier en utilisant stackoverflow.com/questions/2437141/run-java-thread-at-specific-times pour continuer à mettre à jour le ProgressBar. @Sam Merci! – Adeeb

+0

De rien. Je suggère de rester simple en utilisant le code de ce tutoriel, car il doit fonctionner. Votre problème réel semble récupérer l'état de lecture. Bien que Java 7 ait/ait eu quelques failles de sécurité, vous auriez de belles classes FX avec lesquelles lire des fichiers mp3, ils fournissent également des états de lecture précis: http://stackoverflow.com/a/10237397/1175253 – Sam

Questions connexes