Замена JList через выбор Combobox

Я создаю игру поиска слов с помощью ComboBox, в котором есть различные игровые элементы и JList, который показывает слова, которые нужно найти в списке слов. Когда пользователь щелкает элемент в поле со списком, в списке должны отображаться все слова, связанные с этим элементом. Прямо сейчас это будет работать, когда я выберу первый элемент, но если я попытаюсь изменить список слов, выбрав второй элемент, он просто добавит эти слова, не удаляя исходные слова. Я хочу заменить слова, а не добавить их. Я очищаю модель списка в прослушивателе действий, но по какой-то причине она не работает. Методы setAnimalList, setSpaceList и setCompList вызываются из подкласса для установки значений wordList2.

    ArrayList<Word> wordList2 = new ArrayList<Word>(12);
    String[] gameStrings = {"Space", "Animals", "Computers"};
    JList words;
    JComboBox menu;
    DefaultListModel listModel;

    listModel = new DefaultListModel();
    words = new JList(listModel);
    menu = new JComboBox(gameStrings);
    menu.addActionListener(this);

    public void actionPerformed(ActionEvent e) {

    String selected = (String)menu.getSelectedItem();
    if (selected.equals("Animals")) {
        setAnimalList(wordList2);
        listModel.clear();
        for (int i = 0; i < wordList2.size(); i++) {
            listModel.addElement(wordList2.get(i).getWord());
        }
        wordList2.clear();
        }
    else if (selected.equals("Space")) {
        setSpaceList(wordList2);
        listModel.clear();
        for (int i = 0; i < wordList2.size(); i++) {
            listModel.addElement(wordList2.get(i).getWord());
        }
        wordList2.clear();
    }
    else if (selected.equals("Computers")) {
        setCompList(wordList2);
        listModel.clear();
        for (int i = 0; i < wordList2.size(); i++) {
            listModel.addElement(wordList2.get(i).getWord());
        }
        wordList2.clear();
    }
}

}


person user2180462    schedule 09.05.2013    source источник


Ответы (1)


При отсутствии полного примера вы можете попробовать создать и инициализировать три экземпляра DefaultListModel и использовать wordList2.setModel() в прослушивателе комбинации. Этот связанный пример с использованием ComboBoxModel показывает идею.

person trashgod    schedule 09.05.2013