Java自定义ListCellRenderer转换问题(包括SSCCE)
我正在尝试创建一个自定义ListCellRenderer,以便根据jList的输入在每一行中提供不同的前景颜色。我不是专家,但我真的搞不懂 我得到一个铸造错误: 线程“main”java.lang.ClassCastException中出现异常:无法将java.lang.String转换为app.CustomObject 谢谢你抽出时间 以下是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
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"));
啊。。。。老兄,非常感谢!这太明显了,但不知怎的我看不见。干杯啊。。。。老兄,非常感谢!这太明显了,但不知怎的我看不见。干杯我不认为这段代码是独立的。我不认为这段代码是独立的。