【问题标题】:Replacing JList through Combobox selection通过组合框选择替换 JList
【发布时间】:2013-05-09 17:12:59
【问题描述】:

我正在创建一个单词搜索游戏,其中包含一个包含不同游戏项目的 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();
    }
}

}

【问题讨论】:

    标签: java swing jcombobox jlist defaultlistmodel


    【解决方案1】:

    没有complete example,您可以尝试创建和初始化DefaultListModel 的三个实例,并在组合的侦听器中使用wordList2.setModel()。这个相关的example 使用ComboBoxModel 显示了这个想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多