2013-05-09 3 views
0

다른 게임 항목이있는 ComboBox와 단어 목록에서 찾을 단어를 보여주는 JList를 사용하여 단어 검색 게임을 만들고 있습니다. 사용자가 콤보 상자에서 항목을 클릭하면 해당 항목과 관련된 모든 단어가 목록에 표시됩니다. 지금은 첫 번째 항목을 선택할 때 작동하지만 두 번째 항목을 선택하여 단어 목록을 변경하려고하면 원본 단어를 삭제하지 않고 해당 단어를 추가하기 만하면됩니다. 나는 그 단어들을 바꾸지 않고 그 단어들을 바꾸고 싶다. 액션 리스너에서 목록 모델을 지우지 만 어떤 이유로 작동하지 않습니다. setAnimalList, setSpaceList, setCompList 메소드는 서브 클래스에서 호출되어 wordList2의 값을 설정합니다.Combobox 선택을 통해 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(); 
    } 
} 

} 결석 complete example

답변

2

, 당신은 &이 DefaultListModel의 세 개의 인스턴스를 초기화하고 콤보의 리스너에 wordList2.setModel()를 사용하여 만들어보십시오 수 있습니다. 이 관련된 example을 사용하면 ComboBoxModel이 아이디어를 보여줍니다.