Java JList не показывает элементы - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть JList, который должен отображать список школьных тестов.Когда я добавляю значения в этот список в Swing Designer, он отображает все правильно, но когда я пытаюсь отобразить свои собственные данные, он все равно показывает значения, инициализированные в Swing Designer.Как отобразить мой собственный набор данных в JList?Мое первоначальное обновление в коде:

    public void updateFrame(MainFrame mainFrame)
{
    DefaultListModel<Test> listModel = new DefaultListModel<Test>();
    for(int i = 0 ; i < this.getTestList().size() ; i++)
        listModel.add(i, this.getTestList().get(i));
    JList<Test> currList = new JList<>(listModel);      
    currList.setVisible(true);
    mainFrame.setList(currList);
    mainFrame.getList().setVisible(true);
}

Кроме того, мой ListListener не активируется в любой момент, но это еще одна проблема, возможно, легче разобраться после первого.

class ListListener implements ListSelectionListener {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        DefaultListModel<Test> listModel = new DefaultListModel<Test>();
        for(Test test : model.getTestList())
            listModel.addElement(test);
        JList<Test> currList = new JList<Test>(listModel);
        mainFrame.setList(currList);
    }
}

1 Ответ

0 голосов
/ 08 декабря 2018

Опять же, не меняйте компоненты, а скорее модели, что-то вроде:

public void updateFrame(MainFrame mainFrame) {
    DefaultListModel<Test> listModel = new DefaultListModel<Test>();
    for(int i = 0 ; i < this.getTestList().size() ; i++) {
        listModel.add(i, this.getTestList().get(i));
    }

    // ***** get rid of this *****
    // JList<Test> currList = new JList<>(listModel);      
    // currList.setVisible(true);
    // mainFrame.setList(currList);

    // ***** and instead simply do this *****
    mainFrame.getList().setModel(listModel);
}

Если это не сработает, тогда да, создайте и опубликуйте MCVE

...