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 :

formatter le texte d'une JList


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut formatter le texte d'une JList
    bonjour,
    j'ai un prog qui affiche une DefaultListModel dans une JList,
    je voudrais savoir comment faire pour formatter le texte comme par exemple changer la couleur ou rendre en gras une ligne de texte.
    Merci

  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
    Il faut que tu crées une classe implémentant l'interface ListCellRenderer puis affecter ce renderer à ta JList de la façon suivante:

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

    Pour plus d'infos cf la javadoc de la JList il y a ce qu'il te faut dedans:
    http://java.sun.com/j2se/1.5.0/docs/...ing/JList.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut merci je vais tenter
    cette technique.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut Je viens de tester ListCellRenderer mais...
    comment faire si je veux que chaque item dans la JList ait un formattage personnalisé? par exemple chaque item a une couleur spécifique.
    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,
    Dans la méthode getListCellRendererComponent de ListCellRenderer tu passes l'indice en argument. En la redéfinissant tu peux tester cet indice et attribuer une couleur pour chaque indice, ou même pour chaque objet, car l'objet item est aussi dans les arguments
    Va faire un tour ici : http://java.sun.com/j2se/1.5.0/docs/...lRenderer.html je pense que tu verras comment faire...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut je ne vois pas comment cela fonctionne
    dans ma liste j'ai besoin d'accentuer une ligne selon la priorité de la tâche à accomplir. Dison par exemple Rouge pour priorité haute, orange pour priorité moyenne, et bleu pour basse priorité.
    si je crée un CellRender, je ne peux affecter que deux styles (sélectionné et non sélectionné) par classe implémentant l'interface ListCellRenderer.
    dois je créer plusieurs type de CellRenderer?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pas forcément. Si par exemple dans ton CellRenderer tu décides que les 3 premières lignes sont rouges et les autres vertes, dans la méthode getListCellRendererComponent que tu redéfinis tu peux faire un test du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public Component getListCellRendererComponent(JList list,Object value,int index, boolean isSelected, boolean cellHasFocus)  {
        if(index < 3){
            this.setBackground(Color.red);
        } else {
            this.setBackground(Color.green);
        }
    }
    Après tu fais tous les tests que tu veux dans la méthode, tu as tous les éléments en paramètre te permettant de savoir ce qu'il y a dans la case etc...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut le formattage est indépendant de l'index
    je reformule ma demande :
    je veux pouvoir formatter à loisir les components qui sont dans la JList.
    typiquement, je sélectionne un component et j'appuie sur un bouton pour incrémenter la taille de la police.
    j'ai pensé à faire différents cellRenderer qui sont appelés selon l'incrémentation.
    par contre ce qui serait plus économique est d'appeler une méthode qui recoit en argument l'incrément et par conséquent formatte le component.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Salut,
    Tu veux donc que la police puisse avoir une taille différente dans les différentes lignes.
    Donc un seul cellRenderer suffit.
    Tu lui ajoutes un attributs, par exemple un Vector fontSize. Chacun de ses éléments contient la taille de la police pour la ligne de même indice de ta JList.
    Toujours dans ta méthode getListCellRendererComponent, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.setFont(new Font(null,Font.PLAIN,fontSize.elementAt(index)));
    Et quand tu sélectionnes une ligne que tu incrémentes avec ton bouton la taille, tu appelles l'accesseur à ton Vector fontSize et tu donnes à l'indice de la ligne sélectionnée la nouvelle taille.
    Ensuite tu peux adapter au traitement que tu veux...
    A plus

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Bonjour,
    j'ai essayé ta méthode qui marche impec.
    Merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/07/2009, 17h48
  2. [débutant] tabulé une Jlist ou du text
    Par d_token dans le forum Composants
    Réponses: 1
    Dernier message: 31/07/2006, 12h52
  3. inserer une image et du texte dans une Jlist
    Par cellestion dans le forum Composants
    Réponses: 4
    Dernier message: 04/03/2006, 00h47
  4. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 11h23
  5. Réponses: 2
    Dernier message: 10/06/2002, 12h03

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