Как создать несколько Jlists с разными значениями с помощью DefaultListModel

У меня проблема с моим кодом. У меня есть многомерный массив строк [][] и я хочу создать из него списки. Итак, для каждого элемента массива [] мне нужен новый список с его значениями. Так, например, у меня было 4 списка. Список 1 имеет 3 значения, список 2 имеет 1 значение, список 3 имеет 4 значения и список 4 имеет 2 значения. Это работало нормально, когда я только что использовал JList. Там у меня есть для каждого значения массива все его значения.:

    protected static JComponent getButtonCluster() {
    contentPanel.removeAll();
    contentPanel.setLayout(new GridLayout(0,2, 5, 5));
    contentPanel.setBorder(new EmptyBorder(10,0,0,0));
    for (int i=0; i < StringArray.length; i++) {
        listbox = new JList( StringArray[i] );
        contentPanel.add(listbox);
    }
    return contentPanel;
}

Но теперь мне пришлось перейти только с JLists на DefaultListModel, потому что я хочу изменить значения, щелкнув значения. И теперь ВСЕ списки имеют ВСЕ значения массива. Итак, во всех 4 коробках по 10 элементов.

        final DefaultListModel<String> model = new DefaultListModel<String>();          
        for (int i=0; i < StringArray.length; i++) {
        for (int j=0; j < StringArray[i].length; j++) {
            model.addElement(StringArray[i][j]);

            if((StringArray[i].length -1)== j) {
            listbox = new JList<String>(model);
            contentPanel.add(listbox);

            listbox.addMouseListener(new MouseAdapter() {
                     public void mouseClicked(MouseEvent e) {
                         if (e.getClickCount() == 2) {
                             //Value Change part.......
                          }
                     }
            });
            }
        }

Как я могу исправить свою проблему, чтобы у каждого списка были свои значения?


person asgart    schedule 23.09.2016    source источник
comment
Я вижу, вы отредактировали свой пост, так как я опубликовал свой ответ, но мой ответ все еще действителен. new DefaultListModel<String>(); находится вне цикла, поэтому вы используете один экземпляр модели среди всех ваших объектов JList.   -  person D.B.    schedule 23.09.2016


Ответы (1)


Ранее вы создавали new JList при каждом проходе цикла. В вашем новом коде вы не создаете модель new при каждом проходе цикла, а просто каждый раз добавляете что-то к существующей модели.

person D.B.    schedule 23.09.2016
comment
Такие вещи иногда легко не заметить. Рад, что смог помочь :) - person D.B.; 23.09.2016