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