Проблемы с удалением нарисованных объектов из ArrayList в Java - PullRequest
1 голос
/ 12 апреля 2019

В своем действии «Отменить и очистить» я пытаюсь удалить последний элемент в arrayList (отменить) и удалить все элементы в arraysLists (очистить)

У меня есть 2 списка массивов, прямоугольник и круг.

Когда я запускаю программу, я могу рисовать объекты без проблем, однако ничего не происходит, когда я нажимаю отмену или очистку (закомментированный сброс - это код, который я хотел запустить, поместите средство смены цвета фона как ленивый выход)

Не совсем уверен, что я делаю неправильно, и мне бы хотелось немного постичь

Это для домашнего задания!

Вставил соответствующий код - классы Circle и Rectangle просто имеют конструктор и функцию рисования

GraphicsContext gc, transgc;

// Array list of shapes 


ArrayList<Circle> circleList = new ArrayList<Circle>();

ArrayList<Rectangle> rectangleList = new ArrayList<Rectangle>();


// Boolean value if you are drawing a circle
private void drawCircles (ActionEvent e) {
    isRectangle = false; 
}

// Boolean value if you are drawing a Rectangle
private void drawRectangles (ActionEvent e) {
    isRectangle = true; 
}



// Clear
private void clear (ActionEvent e){

  circleList.removeAll(circleList);        
  rectangleList.removeAll(rectangleList);

}

private void undo (ActionEvent e){
    if (isRectangle == false && circleList.size() > 0)
        circleList.remove(circleList.size() - 1);
    else if (isRectangle == true && rectangleList.size()>0)
        rectangleList.remove(rectangleList.size() - 1);
}

// Draws a shape when mouse is pressed 
private void pressHandler(MouseEvent me) {
    int s1;
    int s2;

    if (me.getButton().equals(MouseButton.PRIMARY)) {
        if (isRectangle == false){
        circleList.add(new Circle(me.getX(), me.getY(), s1, s2, color));
        for (Circle g : circleList) {
            g.drawCircle(gc);
        }
    }

        else{
            rectangleList.add(new Rectangle(me.getX(), me.getY(), s1, 
            s2,color));
            for (Rectangle g : rectangleList) {
                g.drawRectangle(gc);
        }
        }
}



private void dragHandler(MouseEvent me) {

    if (isRectangle == false){
        circleList.add(new Circle(me.getX(), me.getY(), s1, s2,color));
        for (Circle g : circleList) {
            g.drawCircle(gc);
        }
    }

    else{
        rectangleList.add(new Rectangle(me.getX(), me.getY(), s1, 
        s2,color));
            for (Rectangle g : rectangleList) {
                g.drawRectangle(gc);
            }
    }
}

Может рисовать фигуры, но не может удалить их с холста после их рисования

...