From b05df284031fa4c3077ab73952690172b21a394f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 16 Jan 2019 14:38:48 +0100 Subject: [PATCH] Add a cell renderer on the eye color JList view component that display the color eye as a background cell color. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/EyeView.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/EyeView.java b/src/EyeView.java index 2f892e4..99b5d0b 100644 --- a/src/EyeView.java +++ b/src/EyeView.java @@ -1,4 +1,5 @@ import javax.swing.*; +import java.awt.*; import java.util.Arrays; public class EyeView extends JPanel { @@ -17,6 +18,7 @@ public class EyeView extends JPanel { this.colorsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.colorsList.setLayoutOrientation(JList.VERTICAL); this.colorsList.setSelectedIndex(Arrays.asList(this.getEyeObj().getColorsList()).indexOf(this.getEyeObj().getStrColor())); + this.colorsList.setCellRenderer(new EyeCellRenderer()); add(label); add(colorsList); } @@ -38,4 +40,17 @@ public class EyeView extends JPanel { public JList getColorsList() { return colorsList; } + + private static class EyeCellRenderer extends DefaultListCellRenderer { + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + Eye currentEye = new Eye((String) list.getModel().getElementAt(index)); + c.setBackground(currentEye.getColor()); + c.setForeground(Color.WHITE); + if (isSelected) { + setBackground(getBackground().darker()); + } + return c; + } + } } -- 2.34.1