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

EDT/SwingWorker Java Discussion :

SwingWorker: afficher une pourcentage


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut SwingWorker: afficher une pourcentage
    Bonsoir à tous,

    Je sais, ca fait 1000 fois qu'on le demande (et ca fait surement mon 10eme post sur SwingWorker), mais je suis totalmeent bloqué!!!

    Je souhaire creer une methode qui me permette d'afficher un traitement long (donc une JProgress)

    Certains d'entre vous m'ont conseillé de voir les SwingWorker, et apres une lecture, relecture, test de tuto, de demo, .... je n'y arrive toujours pas!!!

    J'arrive tres simplement à mettre le tout dans une seul class et ca fonctionne tres bien, mais ce que je veux c'est creer une methode avec un parametre (le pourcentage) et apres appeler cette methode en lui passant la progression au fur et à mesure.

    Voila ce que j'ai pour l'instant (inspiré de l'exemple fourni sur le site pour compter le nombre de fichiers):

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    public class ShowPercent extends JFrame
    {
    	private JProgressBar progressBar;
    	public int percent = 0;
     
    	class MonSwingWorker extends SwingWorker<Integer, String>
    	{
    		public MonSwingWorker()
    		{
    			/* On ajoute un écouteur de barre de progression. */
    			addPropertyChangeListener(new PropertyChangeListener()
    			{
    				public void propertyChange(PropertyChangeEvent evt)
    				{
    					if ("progress".equals(evt.getPropertyName()))
    					{
    						progressBar.setValue((Integer) evt.getNewValue());
    					}
    				}
    			});
    		}
     
    		@Override
    		public Integer doInBackground()
    		{
    			while (percent != 100)
    			{
    				setProgress(percent);
    				System.out.println(percent);
    				try
    				{
    // Pour etre certain qu'il passe par là, je mets 5 secondes d'attente
    					Thread.sleep(5000);
    				}
    				catch (InterruptedException e)
    				{
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    			return 0;
    		}
     
    		@Override
    		protected void done()
    		{
    				/* Le traitement est terminé. */
    				System.out.println("done");
    				setProgress(100);				
    				setVisible(false);
    		}
    	}
     
    	public ShowPercent()
    	{
    		/* Construction de l'interface graphique. */
    		super("ShowPercent");
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		progressBar = new JProgressBar();
    		JPanel content = new JPanel(new BorderLayout());
    		JPanel south = new JPanel(new BorderLayout());
    		south.add(progressBar);
    		content.add(south, BorderLayout.SOUTH);
    		setContentPane(content);
    		pack();
    		setLocation(100, 100);
    		setVisible(true);
    	}
     
    	public int getPercent()
    	{
    		return percent;
    	}
     
    	public void setPercent(int percent)
    	{
    		this.percent = percent;
    	}
     
    	public static void main(String... args)
    	{
    		SwingUtilities.invokeLater(new Runnable()
    		{
    			public void run()
    			{
    				/* Démarrage de l'interface graphique et du SwingWorker. */
    				ShowPercent showPercent = new ShowPercent();
    				MonSwingWorker swingWorker = showPercent.new MonSwingWorker();
    				swingWorker.execute();
    			}
    		});
    	}
    }
    Mais je n'ai aucune idée (en tout cas j'y arrive pas) de comment l'utiliser via une autre class.

    Ainsi par exemple, j'ai une autre class avec une methode a traitmeent long, je voudrais faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ShowPercent sp = new ShowPercent();
    for (int i = 0; i< 100; i++)
    {
    sp.setPercent(i)
    }
    Mais je sais pas comment!!

    Via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SwingUtilities.invokeLater(new Runnable()
    		{
    			public void run()
    			{
    				/* Démarrage de l'interface graphique et du SwingWorker. */
    				ShowPercent showPercent = new ShowPercent();
    				MonSwingWorker swingWorker = showPercent.new MonSwingWorker();
    				swingWorker.execute();
    			}
    		});
    Cela ne va pas car ma methode doit retourner des valeurs ci et là

    D'avance je vous remercie

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    http://java.sun.com/docs/books/tutor...y/interim.html

    La doc de sun contient ce qu'il faut en général,et kà c'est le cas

Discussions similaires

  1. Correction d'une requête qui affiche un pourcentage
    Par doudou2015 dans le forum Langage SQL
    Réponses: 23
    Dernier message: 05/06/2015, 03h00
  2. [XL-2007] Afficher un pourcentage en fonction d'une cellule texte
    Par nioko dans le forum Excel
    Réponses: 3
    Dernier message: 02/07/2013, 18h19
  3. Réponses: 2
    Dernier message: 20/08/2007, 08h34
  4. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 23h18
  5. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 23h20

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