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