2013-05-09 79 views
0

我創建了一個帶有不同遊戲項目的組合框和一個顯示在單詞列表中找到的單詞的JList的單詞搜索遊戲。當用戶點擊組合框中的項目時,列表應顯示與該項目相關的所有單詞。現在,當我選擇第一個項目時它會起作用,但如果我嘗試通過選擇第二個項目來更改單詞列表,它只是添加這些單詞而不刪除原始單詞。我想替換單詞,而不是添加它們。我清除動作偵聽器中的列表模型,但由於某種原因,它不起作用。從子類調用setAnimalList,setSpaceList和setCompList方法來設置wordList2的值。通過組合框替換JList

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(); 
    } 
} 

}

回答

2

沒有一個明確的complete example,你可以嘗試創建&初始化的DefaultListModel三個實例,並在組合的監聽器使用wordList2.setModel()。這個相關example使用ComboBoxModel顯示了這個想法。