2013-07-18 2 views
0

Je sais qu'il y a eu des tonnes de questions à ce sujet, et j'ai passé la plupart d'entre eux au cours des 2 dernières heures à la recherche d'une réponse de travail, aucun ne l'a fait.Jprogress Barre et concurrence

Mon dilemme est que je fais un géocodeur. Mon programme est juste un gui qui permet aux utilisateurs de choisir un fichier Excel contenant des adresses à lire, puis en pressant un autre bouton pour créer un nouveau fichier Excel contenant lesdites données et la latitude et la longitude qui y sont liées. Maintenant, mon client va probablement l'exécuter avec des milliers de lignes à la fois, c'est pourquoi je voudrais ajouter une barre de progression au lieu d'avoir le programme suspendu. Mais, le problème avec ce moment est que, comme prévu, la barre n'est pas mise à jour jusqu'à la fin. Maintenant, je lis à propos de swingworker mais je n'arrive pas à comprendre comment l'implémenter. Est-ce que ma méthode actionperformed ne fait rien mais crée un nouveau thread où tout le travail est fait? Si oui, comment aurais-je le statut du travail au fur et à mesure? Je suis vraiment confus en ce moment et j'apprécierais toute aide.

Merci.

Répondre

1

Ici vous avez une complète example j'aime vraiment comprendre comment utilisez-vous SwingWorker

Un exemple de base:

public class MySwingWorker extends SwingWorker<String,String> { 

     @Override 
     public String doInBackground() { 
      //here you make heavy task in another thread 
      // you call publish or setProgress or both 
     } 

     @Override 
     protected void done() { 
      //here is call when job is done, you can update here your gui 
     } 

     public void process(List<String> chunks){ 
      // this is called when you do publish in the background here 
      // you update the gui 
     } 

} 

Vous exécutez cette méthode dans votre actionPerformed si vous voulez avec mySwingWorker.execute()

+0

Merci pour votre aide. Vous ne manquez pas la classe sur votre première ligne? – Niehm

+0

@Niehm vous avez bien compris;) envisager d'accepter une réponse et d'upvoting toutes les personnes qui vous aident. – nachokk

+0

Cela a fonctionné, encore une fois merci stackoverflow;) – Niehm