ListCellRenderer (Java SE 26 & JDK 26)
Description: declaration: module: java.desktop, package: javax.swing, interface: ListCellRenderer
Keywords: javax.swing.ListCellRenderer interface

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