我正在创建一个带有ComboBox的单词搜索游戏,其中包含不同的游戏道具和一个JList,该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();
}
}
}
如果没有完整的示例,您可以尝试创建&初始化DefaultListModel
的三个实例,并在组合的侦听器中使用wordList2.setModel()
。这个使用ComboBoxModel
的相关示例说明了这个想法。