Salut,
J'utilise un renderer pour pouvoir ajouter à une JComboBox une petite icone comme ici.
Le problème est que le JLabel, une fois centré à gauche, colle la bordure de la JList. J'aimerais pouvoir espacer cette bordure et le contenu du JLabel (icone et texte) tout en gardant l'alignement à gauche.
Voici une image du problème:
Et voilà le code du renderer:
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 ColorPreviewComboBoxRenderer extends JLabel implements ListCellRenderer { Color activeCellBackground = Color.WHITE; Color inactiveCellBackground = new Color(230, 230, 230); Color activeCellForeground = Color.BLACK; Color inactiveCellForeground = Color.BLACK; public ColorPreviewComboBoxRenderer() { setOpaque(true); setHorizontalAlignment(LEFT); setVerticalAlignment(CENTER); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { int selectedIndex = ((Integer)value).intValue(); if (isSelected) { setBackground(activeCellBackground); setForeground(activeCellForeground); } else { setBackground(inactiveCellBackground); setForeground(inactiveCellForeground); } ColorPreview icon = canvasColorList[selectedIndex]; String colorStr = strColorList[selectedIndex]; setIcon(icon); setText(colorStr); setFont(list.getFont()); return this; } }
Partager