Java 无法删除多个选定对象

Java 无法删除多个选定对象,java,swing,Java,Swing,我试图通过按下SHIFT键选择多个对象,然后右键单击并选择删除选项,它将能够删除所有选定的对象 然而,它没有起作用 我的代码如下 鼠标单击 clickShape = null; int x = clickEvent.getX(); // x-coordinate of point where mouse was // clicked int y = clickEvent.getY(); // y-coordinate

我试图通过按下SHIFT键选择多个对象,然后右键单击并选择删除选项,它将能够删除所有选定的对象

然而,它没有起作用

我的代码如下

鼠标单击

clickShape = null;
int x = clickEvent.getX(); // x-coordinate of point where mouse was
                                        // clicked
int y = clickEvent.getY(); // y-coordinate of point
        // when press down shift key
if (clickEvent.isShiftDown()) {
    for (int i = 0; i < shapes.size(); i++) {
        Shape s = (Shape) shapes.get(i);
        if (s.containsPoint(x, y)) {
            s.setColor(Color.RED);
            multiShape.add(s);

        }

    }
应该是

shapes.remove(s); 
不是

shapes.remove(多形状)

您应该传递
shape s
to remove方法以从shapes
ArrayList

java.util.ArrayList.remove(Object) // this is the method you are using .
应该是

shapes.remove(s); 
不是

shapes.remove(多形状)

您应该传递
shape s
to remove方法以从shapes
ArrayList

java.util.ArrayList.remove(Object) // this is the method you are using .

检索对象的id比检索要删除的对象坐标有用得多。此外,删除后,您必须调用repaint。形状区域可能为零,并且从不包含任何点。试着找到离你点击最近的形状,如果它足够近,就添加到列表中。检索对象的id然后删除对象坐标更有用。此外,删除后,您必须调用repaint。形状区域可能为零,并且从不包含任何点。试着找到最接近你点击的形状,如果它足够近,就把它添加到列表中。嗨,它成功了。我刚刚标记为答案:-)非常感谢。嗯,我只是注意到有时候我的删除效果很好。例如,我可以删除所选对象,但在另一次尝试时未能删除..:-(@LattaLiPong这可能会导致其他一些代码…基本上上述方法从shapelist中删除对象s。这没有问题。我注意到的另一件事是,我只能在我之前单击的第一个形状被选中的情况下删除选择。例如,有3个形状。因此我分别按住shift键并单击形状A、B、C。但是,如果我点击B或C上的删除选择。它会删除任何,除非我点击返回形状AHi,它工作了。我只是标记为答案:-)非常感谢。嗯,我只是注意到有时候我的删除效果很好。例如,我可以删除所选对象,但在另一次尝试时未能删除..:-(@LattaLiPong这可能会导致其他一些代码…基本上上述方法从shapelist中删除对象s。这没有问题。我注意到的另一件事是,我只能在我之前单击的第一个形状被选中的情况下删除选择。例如,有3个形状。因此我分别按住shift键并单击形状A、B、C。但是,如果我在B或C上点击删除选项。它将删除除我点击返回形状A之外的任何选项