【问题标题】:removing multiple selections from JList从 JList 中删除多个选择
【发布时间】:2014-04-28 17:49:42
【问题描述】:

我有一个 JList,其中包含一些允许多选的元素。在将这些元素添加到 JList 之前,有关它们的一些信息将存储在单独类中的静态 HashMap 中。选择超过1个项目并按下“删除所选”按钮时,我正在尝试删除所选项目(其工作正常),并从HashMap中删除其记录。但由于某种原因,如果我选择了多个元素,则仅删除 HashMap 中的第一条记录。我不明白这对 JList 是如何工作的,但对 HashMap 不起作用。我的代码如下:

remove.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                    Object[] selectedElementsValues = jList.getSelectedValues();

                    for (int i = 0; i < selectedElementsValues.length; i++) {
                        System.out.println(jList.getSelectedValue().toString());
                        System.out.println(PersonClass.map.get(jList.getSelectedValue().toString()));

PersonClass.map.remove(jList.getSelectedValue().toString());

System.out.println(PersonClass.map);

                }

如果我一次只选择一个项目并将其删除,它会正常工作。但不是多选。但是,JList 中的项目已正确删除,所以我不明白为什么它对地图不做同样的事情。

谢谢

【问题讨论】:

  • 我认为您的问题是地图中的删除不需要索引,而 Jlist 需要索引。

标签: java swing hashmap selection jlist


【解决方案1】:

问题是从地图中删除项目的循环使用jList.getSelectedValue().toString(),而jList 选择没有被修改。您可以使用之前获得的选择数组:

for (Object o : selectedValues) {
    PersonClass.map.remove(o.toString());
}

请注意,getSelectedValues() 已弃用,您应该改用 getSelectedValuesList()

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2011-09-08
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多