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

Composants Java Discussion :

[JProgressBar] Comment gérer avec un algo sur beaucoup d'éléments


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut [JProgressBar] Comment gérer avec un algo sur beaucoup d'éléments
    Bonjour à tous,

    je souhaiterais lier une JProgressBar au traitement que j'effectue sur un tableau de String.
    Pour chaque élement, 100% divisé par le nombre d'elements, on obtient la valeur de progression à ajouter :
    pour 3 elements, je ferais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setValue = value+33;//3 fois car 3 elements
    et à la fin
    Le problème survient quand la longueur de mon tableau dépasse les 1000 ou 10000 elements, car comment augmenter ma barre de progression de façon homogène ... chaud à évaluer !
    surtout que le setValue n'accepte que des int...

    [ Modéré par Viena ]
    Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

    Les Règles du Forum


    comment feriez vous ?
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    bonjour,

    et si tu modifiais la valeur maximale de la JProgressBar ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jProgessBar.setMaximum(10000);

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par herve91
    bonjour,

    et si tu modifiais la valeur maximale de la JProgressBar ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jProgessBar.setMaximum(10000);
    C'est une idée...
    a voir...
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut

    Hum... Et la règle de trois tu connais ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x / 100 = 3 / 1000 => x = 100 * 3 / 1000
    Ce qui donne qq chose comme ca à peut près :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int lengthBar = 100;
    int notifyBarEvery = 3
    int lengthTask = 1000;
    float stepDelta = lengthBar * (notifyBarEvery / (float)lengthTask);
    ...
    float stepValue = 0;
    for (int i = 0 ; i < lengthTask ; i++) { // De 0 à 1000.
      ...
      if ((i % notifyBarEvery) == 0) {  // notification tous les 3 boucles. 1er appel quand i = 0.
        progressBar.setValue((int)stepValue );
        stepValue += stepDelta;         // Dans ce cas on incremente après. Sinon il suffit de changer le test pour incrementer avant la notification de la barre..
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par herve91
    et si tu modifiais la valeur maximale de la JProgressBar ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jProgessBar.setMaximum(10000);
    je pense que c'est la meilleur solution, tu mets la valeur maximale de ta JProgressBar egale à la taille de ton tableau juste avant ta boucle puis tu incremente la valeur de ta JProgressBar de 1 à chaque itération, comme ça tu n'a aucun calcul à effectuer.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par le y@m's
    Citation Envoyé par herve91
    et si tu modifiais la valeur maximale de la JProgressBar ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jProgessBar.setMaximum(10000);
    je pense que c'est la meilleur solution, tu mets la valeur maximale de ta JProgressBar egale à la taille de ton tableau juste avant ta boucle puis tu incremente la valeur de ta JProgressBar de 1 à chaque itération, comme ça tu n'a aucun calcul à effectuer.
    C'est ce que je pense aussi.
    Réedition:
    De plus, ça marche parfaitement.
    Merci une fois de plus Herve91 !

    Private Joke to Herve91 : Je te hais !
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/10/2010, 11h49
  2. Cascade ALL sur BEAUCOUP d'éléments -> timeout sur la transaction
    Par Faiche dans le forum Persistance des données
    Réponses: 1
    Dernier message: 22/10/2009, 21h04
  3. [TabItem] Comment gérer correctement les RoutedMessages sur un overrided ?
    Par ikeas dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 02/10/2008, 13h28
  4. Comment gérer le menu contextuel sur access 2007
    Par chocoprof dans le forum IHM
    Réponses: 1
    Dernier message: 16/12/2007, 18h34

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