JList demoList = new JList(new DemoListModel()){
ListCellRendererWidthIcon renderer = new ListCellRendererWidthIcon();
public ListCellRenderer getCellRenderer() {
return renderer;
}
};
public class ListCellRendererWidthIcon
extends DefaultListCellRenderer {
public ListCellRendererWidthIcon() {
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
if (!(value instanceof Demo)){
return super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);;
}
JLabel lbl = (JLabel)super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
Demo demo = (Demo)value;
lbl.setIcon(demo.getImage());
if (lbl.getIcon() == null)
lbl.setIcon(Demo.DEFAULTICON);
lbl.setText(demo.getText());
lbl.setToolTipText(demo.getToolTipText());
return lbl;
}
ListCellRendererWidthIcon renderer = new ListCellRendererWidthIcon();
public ListCellRenderer getCellRenderer() {
return renderer;
}
};
public class ListCellRendererWidthIcon
extends DefaultListCellRenderer {
public ListCellRendererWidthIcon() {
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
if (!(value instanceof Demo)){
return super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);;
}
JLabel lbl = (JLabel)super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
Demo demo = (Demo)value;
lbl.setIcon(demo.getImage());
if (lbl.getIcon() == null)
lbl.setIcon(Demo.DEFAULTICON);
lbl.setText(demo.getText());
lbl.setToolTipText(demo.getToolTipText());
return lbl;
}
ListCellRendererWidthIcon renderer = new ListCellRendererWidthIcon();
public ListCellRenderer getCellRenderer() {
return renderer;
}
};这些代码可以这样写的吗?我这样写时怎么显示语法错误
你这些代码可以为每一个选项设置图标吗?
如果可以,你上面的代码那里是使每个选项图标不同的关键?
我自已也写了一个自定义的ListCellRenderer
在当用list.setCellRenderer(new MyListCellRenderer(Icon image))时
list中所有选项的图标都会变成Image请指教
关键是在这里:
Demo demo = (Demo)value;
lbl.setIcon(demo.getImage());
Demo是我的一个接口。把上面一句改成你要的Icon就可以了。