我创建了动态填充组件的UI。 UI就像表,它有X行,但每行有4个组件[1个JLable,3个JComboboxes]。我想为所有组合框注册监听器,从组合框中获取 selectedItem()并将其用于进一步参考。但是,我无法使用现有代码执行此操作。 代码如下。
for(int i=0; i< list.size(); i++) {
final int j = i;
cb1[i] = new JCombobx();
masterPanel[i].add(cb1[i]);
cb2[i] = new JCombobx();
masterPanel[i].add(cb2[i]);
cb3[i] = new JCombobx();
masterPanel[i].add(cb3[i]);
cb1[j].addItem("Select Value");
for (OtherObject l : List) {
cb1[j].addItem(l);
}
cb1[j].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedValue = (SomeObject) cb1[j].getSelectedItem();
}
});
}
我得到了这个例外:
java.lang.ClassCastException: java.lang.String cannot be cast to SomeObject
在此,将根据从cb1中选择的值填充组合框[cb2],最终将根据从cb2中选择的值填充第三个组合框。 它有什么问题?
答案 0 :(得分:2)
异常非常清楚:显然,你将字符串放入你的第一个组合框对象(在你没有在这里显示的代码中)。
字符串对象可以从不转换为(SomeObject)类。
所以,有两种方法可以解决这个问题: