2015-09-06 39 views
0

這是我遇到的問題:我有一個ArrayList的5 JComboBox的。這些JComboBox的每個包含相同的五個選項:"1", "2", "3", "4", and "5"。然後我通過for循環將的JComboBox加到JFrame。但是,由於某種奇怪的原因,只要我在JComboBox之一中選擇了一個選項,JComboBox的其餘部分也會選擇該原因。 該第一截圖的JFrame在其狀態第一執行時:screenshot1JComboBoxes的ArrayList導致JComboBoxes互相鎖定

這是用戶的選擇另一個菜單項的屏幕截圖:screenshot2

,這第三個屏幕截圖示出了所有JComboBox已更改爲所選輸入。screenshot3

這是我的代碼:

class Foo { 
    JFrame frame = new JFrame("Add person(s)"); 
    ArrayList<JComboBox> comboArray = new ArrayList<JComboBox>(); 

    String[] floors = {"1", "2", "3", "4", "5"}; 
    DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(floors); 

public void go() { 
    for (int x = 0; x < 5; x++) { 
     comboArray.add(new JComboBox<String>(model)); //Adds numbers 1-5 to a new JComboBox, and the JComboBox is then added to comboArray 
     frame.add(comboArray.get(x)); //Adds each JComboBox to the frame 
    } 
    frame.setResizable(false); 
    ... 
    frame.setVisible(true); 
} 

public static void main (String [] args) { 
    go(); 
} 

} 

回答

4
comboArray.add(new JComboBox<String>(model)); 

您添加相同ComboBoxModel每個組合框。

您需要爲每個組合框創建一個單獨的模型。

所以循環中的代碼應該是:

DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(floors); 
comboArray.add(new JComboBox<String>(model)); 

現在每個組合框包含一個獨立的模型,但每個模型包含相同的值。