Module java.desktop
Package javax.swing

Interface ListCellRenderer<E>

类型参数:
E - 此渲染器可用于的值的类型
所有已知的实现类:
BasicComboBoxRenderer, BasicComboBoxRenderer.UIResource, DefaultListCellRenderer, DefaultListCellRenderer.UIResource, MetalFileChooserUI.FileRenderer, MetalFileChooserUI.FilterComboBoxRenderer

public interface ListCellRenderer<E>
识别可用作JList中单元格绘制的“橡皮图章”的组件。例如,要将JLabel用作ListCellRenderer,可以编写如下内容:
 
 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;

         // 检查此单元格是否表示当前的DnD放置位置
         JList.DropLocation dropLocation = list.getDropLocation();
         if (dropLocation != null
                 && !dropLocation.isInsert()
                 && dropLocation.getIndex() == index) {

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

         // 检查此单元格是否已选择
         } else if (isSelected) {
             background = Color.RED;
             foreground = Color.WHITE;

         // 未选择,并且不是DnD放置位置
         } else {
             background = Color.WHITE;
             foreground = Color.BLACK;
         };

         setBackground(background);
         setForeground(foreground);

         return this;
     }
 }
 
 
自版本:
1.2
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    getListCellRendererComponent(JList<? extends E> list, E value, int index, boolean isSelected, boolean cellHasFocus)
    返回已配置为显示指定值的组件。
  • Method Details

    • getListCellRendererComponent

      Component getListCellRendererComponent(JList<? extends E> list, E value, int index, boolean isSelected, boolean cellHasFocus)
      返回已配置为显示指定值的组件。然后调用该组件的paint方法来“渲染”单元格。如果需要计算列表的尺寸,因为列表单元格没有固定大小,将调用此方法生成一个组件,可以在其上调用getPreferredSize
      参数:
      list - 我们正在绘制的JList。
      value - list.getModel().getElementAt(index)返回的值。
      index - 单元格的索引。
      isSelected - 如果指定的单元格已选择,则为True。
      cellHasFocus - 如果指定的单元格具有焦点,则为True。
      返回:
      paint()方法将渲染指定的值的组件。
      参见: