swing为什么在java中JComboBox的ListCellRenderer上出现类强制转换异常?
我有一个自定义组合框列表,如下所示
class ArtikelListRenderer extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Artikel artikels = (Artikel) value;
setText(artikels.getName());
return this;
}
}
我将此渲染添加到组合框,如下所示
public void setUpArtikelComboBox() {
panel.lstArtikel = readFromArtikel();
panel.cbxArtikel = new WebComboBox(new ComboBoxModelArtikel(panel, lstArtikel));
panel.cbxArtikel.setAction(new ComboBoxArtikelActionListener(panel));
panel.cbxArtikel.setRenderer(new ArtikelListRenderer());
panel.artikelTabPanel.add(panel.cbxArtikel, BorderLayout.NORTH);
}
为什么我会受伤
Exception in thread "AWT-EventQueue-1" java.lang.ClassCastException: java.lang.String
在第行的ListCellRenderer类中:
Artikel artikels = (Artikel) value;
# 1 楼答案
我似乎您的组合框模型包含
String
WebComboBox和ComboBoxModelArtikel的来源是什么
编辑:
在我看来,它的工作正如我所期望的(我想模拟你的问题)
有3个未回答的问题:
# 2 楼答案
我假设
ComboBoxModelArtikel
是您的自定义ComboBoxModel
,它使用一个List
或另一个Collection
我还假设打电话的时候
正确初始化内部
List
(或表示模型的其他类)你有电话吗
在代码中的某个地方使用
String
作为参数?您的自定义ListCellRenderer
将被指定为prototypeCellValue
的任何内容调用# 3 楼答案
这意味着“值”不是Artikel类型