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;
           }
       }

  See Also:
    `JList`, `DefaultListCellRenderer`

- - ### Method Summary

    Methods
    Modifier and Type | Method and 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 Detail

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

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved.