さまざまなゲーム アイテムを含む ComboBox と、単語リストにある単語を表示する JList を使用して、単語検索ゲームを作成しています。ユーザーがコンボボックス内の項目をクリックすると、その項目に関連付けられたすべての単語がリストに表示されます。現時点では、最初の項目を選択すると機能しますが、2 番目の項目を選択して単語リストを変更しようとすると、元の単語が削除されずに単語が追加されるだけです。言葉を付け加えたいのではなく、置き換えたいのです。アクション リスナーでリスト モデルをクリアしましたが、何らかの理由で機能しません。サブクラスから 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();
}
}
}