Java 选中时从可滚动列表中删除obj

Java 选中时从可滚动列表中删除obj,java,arraylist,Java,Arraylist,我有两个可滚动列表,列表1和列表2 两者在列表中具有相同的对象,但当在列表1中选择obj时,我需要将其从列表2中删除 这是我的代码: private void displayList2() { Car selectedCar = (Car)list1.getSelectedValue(); //gets the selected value from list1 which is working fine. List<String> carsDat

我有两个可滚动列表,列表1和列表2

两者在列表中具有相同的对象,但当在列表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);
          }
      }
   }
private void displayList2()
{
Car selectedCar=(Car)list1.getSelectedValue();//从工作正常的list1获取所选值。
List carsData=new ArrayList();
适用于(每辆车:每辆车)
{
if(车数等于(选定车数))
{
列表2.移除(所选车辆);
}
}
}
它当前从可滚动列表(list1)中获取SelectedValue,该列表工作正常,但不会从列表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);
   }
private void displayList2()
{
Car selectedCar=(Car)list1.getSelectedValue();//从工作正常的list1获取所选值。
List carsData=new ArrayList();
适用于(每辆车:每辆车)
{
if(carsData.equals(selectedCar))
{
carsData.remove(选定的CAR);
}
列表2.设置列表数据(cars);
}
列表2.setSelectedIndex(0);
}

没有显示任何错误,两个可滚动列表均有效,且selectedIndex为0,但当单击列表1时,它仍不会从列表2中删除对象。2

 if (cars.equals(selectedCar))
它永远不会是
真的

您应该将所选的
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();
     }
 }
for(Iterator it=cars.Iterator();it.hasNext();){ Car eachcar=it.next(); 如果(每辆车等于(所选车)){ it.remove(); } }
然后在循环之后,调用
list2.setListData(cars)
更新JList的内容。

找不到适用于remove(Car)方法组件的方法。remove(MenuComponent)不适用(参数不匹配;Car无法转换为MenuComponent)。尽管有一个小的输入错误,但这还是很好地解决了Thankyu@davidxxx的问题。迭代器();是cars.iterator();不客气。在没有编译器的情况下写作有时可能会造成这种打字错误:)