IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[Thread][Progressmonitor] Besoin aide


Sujet :

Concurrence et multi-thread Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut [Thread][Progressmonitor] Besoin aide
    Bonjour a tous,

    j'aurai besoin d'aide pour savoir comment mettre exécuter une fonction dans un thread et surveiller la progression a l'aide d'un ProgressMonitor, c'est la premiere fois que j'essaye donc je suis un pe perdu.

    Le code de la fonction qui doit s'exécuter dans un thread :

    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
     
    public void copyBytes(File inputFile, String outputFilePath, String outputFileName) throws IOException
    	{
    		File outputFile = new File(outputFilePath, outputFileName);
     
    		FileInputStream in = new FileInputStream(inputFile);
    		FileOutputStream out = new FileOutputStream(outputFile);
    		int c;
     
    		while((c = in.read()) != -1)
    		{
    			out.write(c);
    		}
     
    		in.close();
    		out.close();
    	}
    Si qqun peut m'indiquer comment faire, je l'en remercie d'avance.

  2. #2
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    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
     
    public void copyBytes(File inputFile, String outputFilePath, String outputFileName) throws IOException
       {
          File outputFile = new File(outputFilePath, outputFileName);
     
          FileInputStream in = new FileInputStream(inputFile);
          FileOutputStream out = new FileOutputStream(outputFile);
          int c;
          ProgressMonitor pm=new ProgressMonitor(taFentre,"copie de fichier","",0,(int)inputFile.legth());
          int progress=0;
     
          while((c = in.read()) != -1)
          {
             pm.setNote("ecriture de :"+c);
             pm.setProgress(progress+4);
             out.write(c);
          }
     
          in.close();
          out.close();
       }
    jamais essaye, donc je ne siais pas si ca marche.

    PS: taFenetre est une reference vers la fenetre qui lance le thread

  3. #3
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut et merci de m'aider une nouvelle fois

    J'ai essayé le code que tu as mis, mais le progressmonitor n'apparait pas.

    inputFile provient d'un JFileChooser

    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
     
    .....
    if(chooser == null)
    					chooser = new JFileChooser();
     
    				int result = chooser.showOpenDialog(FenetrePrincipale.getInstance());
     
    				if(result == JFileChooser.APPROVE_OPTION)
    				{
     
    					try {
     
    						File inputFile = chooser.getSelectedFile();
    ........
    newFile.copyBytes(inputFile, path, fileName);
    ........
    } catch(IOException e) {
     
    						e.printStackTrace();
    					}
    Si le fichier est assez lourd cela prend un pe de tps a copier et a la place de mon JFileChooser, il y a un encadrer gris sur mon interface le tps de la copie du fichier.

    Je voudrais améliorer cela en mettant ma fonction dans un thread et montrer la progression.

  4. #4
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    de rien
    c'est que le fichier n'est pas tres grand, donc le pm n'a pas le temps de s'afficher, mais tu peux l'afficher quand meme avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setMillisToDecideToPopup(0);
    mais il n'apparaitera que pour qq millisecondes, sinon tu peux aussi essayer avec un fichier un peux grand (qq disaines de Mo feront l'affaire).

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Ok,

    Mais comment éviter que l'encadré gris apparaisse une fois que g cliqué sur le bouton ouvrir de JFileChooser et que le traitement du fichier commence?

    Merci

  6. #6
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    j'ai pas bien compris, mais si tu veux dire que le filechooser ne se ferme pas totalement avant que le progressmonitor apparaisse, tu peux augmenter un peu le delai de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setMillisToDecideToPopup();
    (20, peut etre un plus ou moins).

  7. #7
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Lorsque je clique sur le bouton Ouvrir de JFileChooser, le JFileChooser met du tps a se fermer et cela dépend du fichier que je séléctionne. Normalement dés que je clique sur le bouton ouvrir le JFileChooser devrait se fermer non?

  8. #8
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    ok, tu peux essayer autre chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    javax.swing.SwingUtilities.invokeLater(new Runnable(){
         public void run(){
                newFile.copyBytes(inputFile, path, fileName); 
                }
         });

Discussions similaires

  1. besoin aide pour requête compliquée ......
    Par Ickou dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/04/2006, 17h43
  2. Réponses: 9
    Dernier message: 10/02/2006, 17h24
  3. Thread demande d'aide
    Par globz dans le forum Linux
    Réponses: 2
    Dernier message: 11/04/2005, 10h33
  4. [HTML] Besoin aide sur scroll et balise
    Par Kerod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 24/03/2005, 14h42
  5. débutant : besoin aide
    Par simon76 dans le forum Flash
    Réponses: 6
    Dernier message: 14/08/2003, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo