2015-09-06 3 views
0

Это проблема, которая у меня есть: у меня есть ArrayList из 5 JComboBox. Каждый из этих JComboBox содержит те же пять опций: "1", "2", "3", "4", and "5". Затем я добавляю ArrayList из JComboBox в JFrame через цикл for. Однако по какой-то нечетной причине, когда я выбираю опцию в одном из JComboBox, остальные JComboBox также выбирают эту причину. Это первый скриншот изJFrameв своем состоянии, когда первая выполнена: screenshot1ArrayList из JComboBoxes, заставляющий 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)); 

Теперь каждый выпадающие содержит отдельную модель, но каждая модель содержит то же значение.

Смежные вопросы