# Interface ListCellRenderer<E>

Type Parameters:
  `E` - the type of values this renderer can be used for

All Known Implementing Classes:
  `BasicComboBoxRenderer, BasicComboBoxRenderer.UIResource, DefaultListCellRenderer, DefaultListCellRenderer.UIResource, MetalFileChooserUI.FileRenderer, MetalFileChooserUI.FilterComboBoxRenderer`

public interface ListCellRenderer<E>
Identifies components that can be used as "rubber stamps" to paint the cells in a JList. For example, to use a JLabel as a ListCellRenderer, you would write something like this:

    class MyCellRenderer extends JLabel implements ListCellRenderer<Object> {
        public MyCellRenderer() {
            setOpaque(true);
        }

        public Component getListCellRendererComponent(JList<?> list,
                                                      Object value,
                                                      int index,
                                                      boolean isSelected,
                                                      boolean cellHasFocus) {

            setText(value.toString());

            Color background;
            Color foreground;

            // check if this cell represents the current DnD drop location
            JList.DropLocation dropLocation = list.getDropLocation();
            if (dropLocation != null
                    && !dropLocation.isInsert()
                    && dropLocation.getIndex() == index) {

                background = Color.BLUE;
                foreground = Color.WHITE;

            // check if this cell is selected
            } else if (isSelected) {
                background = Color.RED;
                foreground = Color.WHITE;

            // unselected, and not the DnD drop location
            } else {
                background = Color.WHITE;
                foreground = Color.BLACK;
            };

            setBackground(background);
            setForeground(foreground);

            return this;
        }
    }

Since:
  1.2
See Also:
  - `JList`
  - `DefaultListCellRenderer`

## Method Summary

Modifier and Type
Method
Description
`Component`
`getListCellRendererComponent(JList<? extends E> list, E value, int index, boolean isSelected, boolean cellHasFocus)`
Return a component that has been configured to display the specified value.

## Method Details

### getListCellRendererComponent

Component getListCellRendererComponent(JList<? extends E> list, E value, int index, boolean isSelected, boolean cellHasFocus)
Return a component that has been configured to display the specified value. That component's `paint` method is then called to "render" the cell. If it is necessary to compute the dimensions of a list because the list cells do not have a fixed size, this method is called to generate a component on which `getPreferredSize` can be invoked.

Parameters:
  `list` - The JList we're painting.
  `value` - The value returned by list.getModel().getElementAt(index).
  `index` - The cells index.
  `isSelected` - True if the specified cell was selected.
  `cellHasFocus` - True if the specified cell has the focus.
Returns:
  A component whose paint() method will render the specified value.
See Also:
  - `JList`
  - `ListSelectionModel`
  - `ListModel`