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 :

créer une JList composée de jProgressBar


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut créer une JList composée de jProgressBar
    Bonjour, j'essaye de gérer l'affichage de plusieurs jProgressBar (en nombre aléatoire).

    Ma première idée est de stocké mes jProgressBar dans une defaultListModel est ensuite faire maJlist.setModel(maDefaultListModel);

    mais sa génère un nombre incalculable d'exceptions donc je suppose que ce n'est pas la bonne solution.
    Si quelqu'un qui a cette solution qu'il m'en fasse part j'en serait très reconnaissant.

    D'avance merci

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Neilime05 Voir le message
    Bonjour, j'essaye de gérer l'affichage de plusieurs jProgressBar (en nombre aléatoire).

    Ma première idée est de stocké mes jProgressBar dans une defaultListModel est ensuite faire maJlist.setModel(maDefaultListModel);

    mais sa génère un nombre incalculable d'exceptions donc je suppose que ce n'est pas la bonne solution.
    Si quelqu'un qui a cette solution qu'il m'en fasse part j'en serait très reconnaissant.

    D'avance merci
    Il n'y a normalement pas de problèmes pour stocker des JProgressBar dans un DefaultListModel. Par contre, pour que l'affichage soit correct, il faut utiliser un ListCellRenderer pour afficher la barre de progression et non pas sa valeur toString() qui est affichée de base.

    Quelles sont les exceptions que tu reçois ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Bon j'ai essayé de faire quelque chose de très basique... juste pour afficher mes progressbar mais rien ne s'affiche (je n'ai pas d'exception cette fois ci)
    Un peu d'aide pour me mettre sur la bonne voie svp ??

    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
    import javax.swing.*;
    import java.awt.*;
     
    public class progress extends JFrame
    {
      JPanel panel = new JPanel();
      JList list = new JList();
      ListCellRenderer yourRenderer = new YourRenderer();
     
      progress()
      {
    	  JProgressBar j1 = new JProgressBar();
    	  JProgressBar j2 = new JProgressBar();	  
    	  list.setCellRenderer(yourRenderer);
    	  list.add(j1);
    	  list.add(j2);  
    	  panel.add(list);
        getContentPane().add(panel);
      }
     
       public static void main(String[] args)
       {
         progress frame = new progress();
         frame.setSize(300,300);
         frame.setVisible(true);
       }
    }
     
    class YourRenderer extends JProgressBar implements ListCellRenderer
    {  
     
      public Component getListCellRendererComponent(JList list, Object value, int a, boolean isSelected, boolean hasFocus)
      {
        try
        {
        	Color bg = new Color(255,0,0);
        	this.setBackground(bg);
        	((JProgressBar)value).setString("Progression");    	
        	((JProgressBar)value).setStringPainted(true);
        	((JProgressBar)value).setValue(10);
        }
        catch (Throwable t){}
        return this;
      }
    }

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Pour ce genre de choses mieux vaut preferer un JPanel contenant des JProgressBar dans un BoxLayout.

    Cependant, si tu preferes continuer avec JList tu devras faire que ton renderer ou ta/tes progress bar(s) appell(ent) repaint() sur la JList pour demander son rafraichissement quand les valeurs changent.
    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 éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Neilime05 Voir le message
    (je n'ai pas d'exception cette fois ci)

    C'est pas que tu n'as plus d'exception, c'est que tu les ignore, il y a une différence. En général, il vaut mieux éviter ce genre de code et ne catcher que les exceptions qui t'intéressent. T'as certainement pas envie de cacher les ClassCastException, les OutOfMemoryError, les IndexOutOfBOundError, les NoClassDefFoundError, ...


    Enfin, dans ton cas, c'est pas un return this que tu dois faire, car ton this est un composant vide, mais un return (JComponent)value.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par tchize_ Voir le message
    C'est pas que tu n'as plus d'exception, c'est que tu les ignore, il y a une différence. En général, il vaut mieux éviter ce genre de code et ne catcher que les exceptions qui t'intéressent. T'as certainement pas envie de cacher les ClassCastException, les OutOfMemoryError, les IndexOutOfBOundError, les NoClassDefFoundError, ...
    +1


    Citation Envoyé par tchize_ Voir le message
    Enfin, dans ton cas, c'est pas un return this que tu dois faire, car ton this est un composant vide, mais un return (JComponent)value.
    Non pas tout à fait...


    En fait soit tu utilises plusieurs JProgressBar, et dans ce cas il vaut mieux se tourner vers un JPanel comme l'a indiqué bouye...

    Mais si tu veux vraiment utiliser une JList il faut prendre une direction différente : tu ne dois pas avoir plusieurs JProgressBar !!!
    Avec une JList tu dois avoir un modèle contenant les données (ici cela pourrait tout simplement être un integer indiquant l'état d'avancement), et un seul et unique JProgressBar comme renderer, qui sera mis à jour à chaque changement du model.

    Maintenant ce n'est pas forcément la solution la plus simple à mettre en oeuvre... Le JPanel serait bien plus adapté à moins que tu n'ai une très grande quantité de progressbar à afficher !

    a++

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Bon après plusieurs test sans grands résultats, j'ai abandonné la jlist, merci quand même pour vos réponses

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

Discussions similaires

  1. [CR XI] Comment créer une invite composée ?
    Par juju05 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/03/2013, 12h13
  2. [A-03] Créer une clé composée de 4 champs
    Par beegees dans le forum Modélisation
    Réponses: 3
    Dernier message: 01/12/2008, 10h42
  3. Initialiser une JList composée de checkbox
    Par Goupsy dans le forum Composants
    Réponses: 3
    Dernier message: 12/08/2008, 16h50
  4. Inserer une jProgressBar dans une Jlist
    Par Noosymer dans le forum Composants
    Réponses: 1
    Dernier message: 18/04/2006, 19h56
  5. [Débutant creation de composant] Créer une LED numérique
    Par C_Marteau dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/06/2005, 21h23

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