[英]Dynamically register listeners in swing
我創建了可以動態填充組件的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
在這種情況下,combobox [cb2]將根據從cb1中選擇的值進行填充,最終第三個組合框將根據從cb2中選擇的值進行填充。 怎么了
異常非常明顯:顯然,您將字符串放入了第一個組合框對象(在此處未顯示的代碼中)。
字符串對象永遠不能轉換為(SomeObject)類。
因此,有兩種方法可以解決此問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.