package fr.iutfbleau.papillon; import javax.swing.*; import java.awt.*; /** * La classe CouleurList permet d’afficher des couleurs * associées à des thèmes dans les listes déroulantes de l’application Papillon. *

* Elle agit comme un renderer personnalisé, affichant un petit carré coloré * à côté du nom du thème. *

* * @version 1.0 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL */ public class CouleurList extends DefaultListCellRenderer { /** * Renvoie la couleur correspondant au nom affiché dans le menu déroulant. * * @param nom le nom du thème (ex. : "Bleu", "Rouge", "Vert", etc.) * @return la couleur associée au thème, ou blanc par défaut */ public Color couleurDe(String nom) { switch (nom) { case "Bleu": return Color.CYAN; case "Rouge": return Color.RED; case "Vert": return Color.GREEN; case "Jaune": return Color.YELLOW; case "Rose": return Color.PINK; default: return Color.WHITE; } } /** * Personnalise l’affichage des éléments dans la liste déroulante. * * @param list la liste affichant les éléments * @param value l’élément à afficher * @param index l’indice de l’élément dans la liste * @param isSelected indique si l’élément est sélectionné * @param cellHasFocus indique si l’élément a le focus * @return le composant personnalisé pour l’affichage de l’élément */ @Override public JLabel getListCellRendererComponent(JList list, Object value, int index,boolean isSelected, boolean cellHasFocus) { JLabel lbl = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { String nom = value.toString(); lbl.setIcon(new ColorIcon(couleurDe(nom), 14, 14)); lbl.setIconTextGap(8); // petit espace entre le carré et le texte } return lbl; } }