Java自定义ListCellRenderer转换问题(包括SSCCE)

Java自定义ListCellRenderer转换问题(包括SSCCE),java,casting,listcellrenderer,Java,Casting,Listcellrenderer,我正在尝试创建一个自定义ListCellRenderer,以便根据jList的输入在每一行中提供不同的前景颜色。我不是专家,但我真的搞不懂 我得到一个铸造错误: 线程“main”java.lang.ClassCastException中出现异常:无法将java.lang.String转换为app.CustomObject 谢谢你抽出时间 以下是SSCCE: import java.awt.Color; import java.awt.Component; import javax.swing.D

我正在尝试创建一个自定义ListCellRenderer,以便根据jList的输入在每一行中提供不同的前景颜色。我不是专家,但我真的搞不懂

我得到一个铸造错误:

线程“main”java.lang.ClassCastException中出现异常:无法将java.lang.String转换为app.CustomObject

谢谢你抽出时间

以下是SSCCE:

import java.awt.Color;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListSelectionModel;

public class MyListCellRenderer extends DefaultListCellRenderer
{

    static Color color;
    static ListSelectionModel listSelectionModel;
    static JList jList1;
    static DefaultListModel listModel = new DefaultListModel();
    static JFrame frame;

    @Override
    public Component getListCellRendererComponent(JList list,
            Object value, int index, boolean isSelected,
            boolean cellHasFocus)
    {
        super.getListCellRendererComponent(list,
                value,
                index,
                isSelected,
                cellHasFocus);

        if (value != null)
        {
            CustomObject o = (CustomObject) value;
            setText(o.getData());
            setForeground(o.getColor());
        }
        return this;
    }

    public static void main(String[] args)
    {


        jList1 = new javax.swing.JList();
        listSelectionModel = jList1.getSelectionModel();
        listSelectionModel.addListSelectionListener(
                new app.ListSelectionHandler());
        jList1.setCellRenderer(new app.MyListRenderer());
        jList1.setModel(listModel);
        listModel.addElement("Option1");

        frame = new JFrame();
        frame.add(jList1);
        frame.pack();
        frame.setVisible(true);
    }
}

class CustomObject
{

    String s;
    Color color;

    public CustomObject(Color color, String s)
    {
        this.s = s;
        this.color = color;
    }

    public Color getColor()
    {
        return color;
    }

    public String getData()
    {
        return s;
    }

    @Override
    public String toString()
    {
        return s + color.getRGB();
    }
}
这里似乎是一个普通的
字符串
“Option1”
可能?),而不是
自定义对象

如果您希望它是一个
自定义对象
,您可以在
main
中尝试类似的操作:

listModel.addElement(new CustomObject(Color.BLUE, "Option1"));
这里似乎是一个普通的
字符串
“Option1”
可能?),而不是
自定义对象

如果您希望它是一个
自定义对象
,您可以在
main
中尝试类似的操作:

listModel.addElement(new CustomObject(Color.BLUE, "Option1"));

啊。。。。老兄,非常感谢!这太明显了,但不知怎的我看不见。干杯啊。。。。老兄,非常感谢!这太明显了,但不知怎的我看不见。干杯我不认为这段代码是独立的。我不认为这段代码是独立的。