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

解决方案 »

  1.   

    JList demoList = new JList(new DemoListModel()){
            ListCellRendererWidthIcon renderer = new ListCellRendererWidthIcon();
            public ListCellRenderer getCellRenderer() {
                return renderer;
            }
        };这些代码可以这样写的吗?我这样写时怎么显示语法错误
    你这些代码可以为每一个选项设置图标吗?
    如果可以,你上面的代码那里是使每个选项图标不同的关键?
    我自已也写了一个自定义的ListCellRenderer
    在当用list.setCellRenderer(new MyListCellRenderer(Icon image))时
    list中所有选项的图标都会变成Image请指教
      

  2.   

    我的代码肯定可以运行的,这是从我的一个软件中拷贝过来的。
    关键是在这里:
                Demo demo = (Demo)value;
                lbl.setIcon(demo.getImage());
    Demo是我的一个接口。把上面一句改成你要的Icon就可以了。