选中时,从滚动列表中删除obj

时间:2017-08-16 10:50:59

标签: java arraylist

我有2个滚动列表,list1和list2。

在列表中都有相同的对象但我需要在列表1中选择obj时从列表2中删除它。

这是我的代码:

   private void displayList2()
   {
      Car selectedCar = (Car)list1.getSelectedValue(); //gets the selected value from list1 which is working fine.
      List<String> carsData = new ArrayList<String>();
      for (Car eachcar : cars)
      {
          if (cars.equals(selectedCar))
          {
              list2.remove(selectedCar);
          }
      }
   }

目前来自可滚动列表(list1)的getSelectedValue工作正常,但不会从列表2中删除

编辑:

我现在已经改变了一些代码看起来像这样但仍然不起作用:

   private void displayList2()
       {
          Car selectedCar = (Car)list1.getSelectedValue(); //gets the selected value from list1 which is working fine.
          List<String> carsData = new ArrayList<String>();
          for (Car eachcar : cars)
          {
              if (carsData.equals(selectedCar))
              {
              carsData.remove(selectedCar);
          }
      list2.setListData(cars);
      }
      list2.setSelectedIndex(0);
   }

没有显示错误,两个滚动列表都有效,且selectedIndex为0,但是当点击list1时,它仍然没有从list2中删除该对象

1 个答案:

答案 0 :(得分:1)

您检查List CarCar之间的相等性:

 if (cars.equals(selectedCar))

永远不会是true

您应该将选定的Car与迭代的当前Car进行比较:

 if (eachcar.equals(selectedCar))

编辑完成后,我认为您需要从JList中删除数据 为此,请使用迭代器删除cars中的选定元素:

 for (Iterator<Car> it = cars.iterator(); it.hasNext();){
     Car eachcar = it.next();
     if (eachcar.equals(selectedCar)){
        it.remove();
     }
 }

然后在循环之后,调用list2.setListData(cars);来更新JList的内容。