- 类型参数:
-
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 TypeMethodDescriptiongetListCellRendererComponent(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()方法将渲染指定的值的组件。 - 参见:
-