Module java.desktop
Package javax.swing

# 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`