【发布时间】: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