Java 选中时从可滚动列表中删除obj
我有两个可滚动列表,列表1和列表2 两者在列表中具有相同的对象,但当在列表1中选择obj时,我需要将其从列表2中删除 这是我的代码: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
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();不客气。在没有编译器的情况下写作有时可能会造成这种打字错误:)