Почему моя DefaultListModel не отображается в моем JList? - PullRequest
0 голосов
/ 01 мая 2018

У меня есть следующий метод.

           DefaultListModel getModelForCabin(Cabin cabin) {

 List<Camper> listAdded= new ArrayList<Camper>(getOrCreateGroup(cabin));

 DefaultListModel<Camper> dfm= new DefaultListModel<Camper>();
    for(Camper c: listAdded){
        if(!dfm.contains(c)){
            dfm.addElement(c);
        }

    }
    //System.out.println(listAdded);
    //System.out.println(dfm);

    return dfm;
}

Затем я устанавливаю этот метод в JList следующим образом ...

 JList list = new JList(getModelForCabin((Cabin)comboBox.getSelectedItem()));
scrollPane_1.setViewportView(list);

В методе, если я печатаю dfm и listAdded, как показано в строке системной печати, он показывает оба.

Если я наберу это ...

System.out.println(getModelForCabin((Cabin)comboBox.getSelectedItem());   

Она также печатает модель.

Что он не будет делать, так это добавить модель в JList. Я попытался изменить код, удалить JList и создать новый, а также реорганизовать код.

Что бы я ни делал, это не сработает.

Итак, мой список печатается нормально, мой DefaultListModel печатается нормально, мой HashMap, который печатает Cabin и Campers, работает нормально, но JList не будет печатать модель.

Добавлено:

     JScrollPane scrollPane_1 = new JScrollPane();
    scrollPane_1.setBounds(361, 205, 296, 339);
    getContentPane().add(scrollPane_1);

     list = new JList(getModelForCabin((Cabin)comboBox.getSelectedItem()));
    scrollPane_1.setViewportView(list);

1 Ответ

0 голосов
/ 02 мая 2018

Я понял, что проблема в том, что я не устанавливал модель. Если модель является локальной DefaultListModel, она должна быть установлена ​​в основном классе с помощью метода setModel.

Мне нужно было сослаться на JList, а затем сделать setModel следующим образом ...

            list.setModel(getModelForCabin((Cabin)comboBox.getSelectedItem()));

Где list - это переменная JList, а getModelForCabin (Cabin Cabin) - метод, который возвращает DefaultListModel.

Он был добавлен как к слушателю действия для кнопки добавления, так и к кнопке обновления, созданной при открытии класса.

...