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 :

[JList] Modifier les couleurs des lignes à l'ajout selon le cas?


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut [JList] Modifier les couleurs des lignes à l'ajout selon le cas?
    Salut,

    je me propose d'afficher des messages dans une Jlist , et il m'a été demandé d'afficher ces messages ( initialement stockés dans un ficher texte, chaque message sur une ligne a part).

    l'idee est que chaque message sera affiché differement selon son type:
    - un message contenenat le mot"erreur" sera affiche sur un fond rouge
    - un message warning sur un fond gris
    - dans el cas contraire le message sera affiche sur un fond blac
    bien sur la couleur du texte est noire. A la fin la liste sera compose d'un ensemble de messages chacun d'un style a part voial!

    comment pourrais je faire cela svp ?
    merc²i

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut utiliser les ListCellRenderer pour modifier l'affichage des éléments de la liste, en héritant de DefaultListCellRender :

    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
    list.setCellRenderer(new DefaultListCellRenderer() {
    			@Override
    			public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    				// On appele la méthode parent qui initialise tout bien :
    				super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
     
    				// Le paramètre 'value' correspond à la valeur de la ligne courante
    				// On s'en sert pour déterminer la couleur de fond à appliquer
    				if ( **** ) {
    					setBackground(Color.RED);
    				}
     
    				return this;
    			}
     
    		});
    Tu peux bien sûr caster le paramètre 'value' dans le type réel que tu utilises pour les éléments de ta JList, et tu change la couleur comme bon te semble...

    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    merci

    sinon aurais tu une methode tres rapide pour lire ces messages un a un a partir d'un fichier texte par exemple ?
    merci

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    [edit] Oups, j'ai été moins rapide que AdiGouba[edit]

    Bonjour,

    Pour gérer l'affichage d'une ligne, il faut que tu crées un renderer pour ta liste qui definisse comment afficher une ligne de ta liste. Pour cela tu dois créer une classe qui implemente ListCellRenderer

    exemple :

    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
    class MyCellRenderer extends JLabel implements ListCellRenderer {
         final static ImageIcon warningIcon = new ImageIcon("warning.gif");
         final static ImageIcon errorIcon = new ImageIcon("error.gif");
     
         // Voici l'unique méthode de ton renderer qui indique comment afficher une ligne
         public Component getListCellRendererComponent(
           JList list,                  // Reference à ta liste
           Object value,            // valeur à afficher
           int index,                 // index de la ligne à afficher
           boolean isSelected,      // indique si ta ligne est sélectionnée
           boolean cellHasFocus)    
         {
             String s = value.toString();
             setText(s); // affiche la ligne
             if(s.indexOf("erreur") != -1)
                   setIcon(errorIcon);
             else if(s.indexOf("warning") != -1)
                   setIcon(warningIcon);
     
             if (isSelected) 
             {
                 setBackground(list.getSelectionBackground());
    	setForeground(list.getSelectionForeground());
             }
             else 
             {
    	setBackground(list.getBackground());
    	setForeground(list.getForeground());
             }
     
             setEnabled(list.isEnabled());
             setFont(list.getFont());
             setOpaque(true);
             return this;
         }
     }
    Dans l'exemple j'ai affiché des icones pour spécifier que la ligne était une erreur ou un warning, car la couleur de fond est utilisé pour specifier les lignes selectionnées.

    Après il ne te reste plus qu'à specifier ton renderer à ta JList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myList.setCellRenderer(new MyCellRenderer());

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    merci pour vous deux

    et as tu une façon rapide pour lire les messages ligne par ligne a partir du fichier texte ?
    merci

  6. #6
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Salut,

    Qu'est ce que tu entends par façon rapide ?

    Comment fais-tu actuellement ?

  7. #7
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    pour le fichier ( si c'est du texte )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BufferedReader br=new BufferedReader(new FileReader("monFichier"));
    String line=null;
    while((line=br.readLine())!=null){
        // Ton traitement sur la ligne
    }

Discussions similaires

  1. Alterner les couleurs des lignes d'un tableau dynamique
    Par temperature dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2008, 14h14
  2. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 11h01
  3. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 14h52
  4. Alterner les couleurs des lignes d'un tableau
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/06/2006, 22h13

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