0
for(JCheckBox currentCheckBox : imagesToBeImportedCheckBox){ 
    if(currentCheckBox.isSelected()){
                    System.out.println("The text Box selected for removing are"+currentCheckBox.getText());
                }

             }
            for(JCheckBox currentCheckBox : imagesToBeImportedCheckBox){

                if(currentCheckBox.isSelected()){
                    System.out.println("I am entering in the loop where this image has to be removed "+currentCheckBox.getText());
                    imagesToBeImported.remove(currentCheckBox.getText());

                }

             }
            for(ResourceListObject currentImage : imagesToBeImported){

                System.out.println("After removing the images left are "+currentImage.getName());

             }

这是输出

选择删除的文本框是 aix71b

选择删除的文本框是 Migration-image

我正在进入必须删除此图像的循环 aix71b

我正在进入必须删除此图像的循环迁移图像

删除后剩下的图像是aix71b

删除后留下的图像是 Migration-image

4

2 回答 2

5

查看您的代码,很可能这就是问题所在。

imagesToBeImported.remove(currentCheckBox.getText());

这试图从 Collection中删除一个StringgetText()提示我在这里说 String) ,但 Collection包含 type 的元素。aix71bimagesToBeImportedimagesToBeImportedResourceListObject

这就是为什么没有从您的 Collection 中删除的原因,因为String它们ResourceListObject不是同一类型。

编辑:-(您可以使用以下 2 种方式从列表中删除)

您可以遍历imagesToBeImported(使用迭代器)的每个元素,并从equals中imagesToBeImportedCheckBox删除元素。imagesToBeImportedresourceListObjectElement.getName()currentCheckBox.getText()

或者,您可以根据其中的字段覆盖您的equals方法,以便您可以执行类似的操作将其从.ResourceListObjectnameimagesToBeImported

imagesToBeImported.remove(new ResourceListObject(currentCheckBox.getText()));
// You need to add another constructor in your ResourceListObject class which takes in only the name field as the parameter.
于 2013-09-25T04:46:34.987 回答
0

问题在于currentCheckBox.getText()currentImage.getName()不是完全相同的对象 -equals即使值相同,方法也不适用于它们。

于 2013-09-25T04:47:02.043 回答