SetFont sur une ComboBox en Java

Résolu/Fermé
dudes Messages postés 2 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 23 juillet 2007 - 21 juil. 2007 à 13:05
dudes Messages postés 2 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 23 juillet 2007 - 23 juil. 2007 à 09:35
Bonjour,

Je travaille en Java 1.6 en Swing

J'ai un petit souci tout bête : je veux mettre en italique certains champs d'une liste déroulante en fonction d'un de leurs attributs.
Je parcours une liste de champ (un Vector()) a ajouter, dans la liste déroulante (JComboBox) et certains doivent être en italiques et d'autre rester normaux.

Mon problème vient du fait que je n'arrive pas a appeler la méthode setFont(Font) sur des enregistrements particuliers de la liste.

Merci d'avance si vous avez une solution
A voir également:

1 réponse

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
21 juil. 2007 à 15:27
Bonjour Dudes,

Je n'ai jamais eu à faire ça sur une ComboBox mais le principe est normalement le même que pour les JList : Il faut passer par un renderer.

L'idée c'est que lorsque le contenu d'une entrée de la liste est affiché, la méthode getListCellRendererComponent détermine, en fonction de la valeur de l'élément (ou pour tous les éléments si tu ne précises aucun test), quel composant renvoyer pour l'affichage. Ce composant c'est toi-même qui devras le créer dans la classe de rendu et ça pourra être par exemple un JLabel auquel tu auras attaché ton texte en italique.

Je n'ai malheureusement pas d'exemple à te donner mais en cherchant un peu les combinaisons "JComobox renderer" ou "JList renderer" ça devrait t'aider à trouver quelques exemples.

Un peu comme ici : http://www.java2s.com/Code/Java/Swing-JFC/Colorcomboboxrenderer.htm où chaque entrée de la Combobox a été remplacée par un Panel prenant pour fond la couleur correspondante. Comme tu le dis on ne sait pas appliquer la méthode setFont() sur une entrée de la liste mais en passant par un renderer tu substitues simplement le texte (normalement par défaut il est mis dans un JLabel) par un composant de ton choix (ça peut même être une image).

Bon courage !
0
dudes Messages postés 2 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 23 juillet 2007
23 juil. 2007 à 09:35
Je te remercie beaucoup ca marche beaucoup mieux maintenant :)
0