我有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中删除该对象
答案 0 :(得分:1)
您检查List
Car
和Car
之间的相等性:
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的内容。