【发布时间】:2011-03-06 19:07:33
【问题描述】:
我是这里的新手,刚刚加入了这个美妙的社区。我不得不承认这是编程问题和答案的最佳网站。现在让我进入正题:
我正在尝试创建一个 JList,我可以在其中输入从 ColorChooser 获取的具有不同字体颜色的行。我已经尝试过如下所述的方法
提前感谢您的任何回答。 最好的祝福, dwc
这是我的示例代码:
class CustomObject
{
String s;
Color color;
String scolor;
public CustomObject(Color color, String s)
{
this.s = s;
this.color = color;
}
public String getColor()
{
return scolor = Integer.toString(color.getRGB());
}
public String getData()
{
return s;
}
@Override
public String toString()
{
return s + color.getRGB();
}
}
class myListRenderer extends DefaultListCellRenderer
{
Color color;
@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());
color = new Color(Integer.parseInt(o.getColor()));
setForeground(color);
}
return this;
}
}
我的主要问题是我收到一个错误:
java.lang.ClassCastException: java.lang.String cannot be cast to app.CustomObject
在行中:
CustomObject o = (CustomObject)value;
【问题讨论】:
-
我已经检查了该解决方案,但与该示例不同,我只是不确定如何在每种情况下实际手动提供我想要使用的颜色。
-
那不是 SSCCE。我该如何编译?您在哪里构建 CustomObject 并将其添加到模型中?您没有在下面的链接中看到我提供给您的 SSCCE 吗?还有为什么 getColor 方法返回一个字符串, setForeground() 方法需要一个 Color 对象。既然你传入了一个 Color 对象,为什么还要将它来回转换为 String/Color?
-
是的,这只是代码的片段,我没有时间阅读您给我的SSCCE页面,所以我只是粘贴了代码。由于问题源于这里,这还不够吗?是的,getColor 方法需要修改,但这与问题无关。无法编译的行是:CustomObject o = (CustomObject)value;
-
而且我没有时间创建测试程序。根据定义,在解决问题之前,您不知道代码的哪一部分导致了问题,因此您不知道解决问题的相关代码是什么,或者不是什么。问题显然是您添加到模型中的数据(您认为您添加了一个 CustomObject 但代码告诉您添加了一个字符串)并且您没有发布该代码。祝你好运,我试图提供帮助,但我没有时间玩 20 个问题,这就是我要求参加 SSCCE 的原因!