Сохранение рисования графики - удаление super.paintComponent

У меня есть класс с именем Foo, который расширяет класс с именем Bar, который расширяет JPanel и реализует ActionListener. Когда я выбираю Круг и нажимаю кнопку рисования, я рисую круг, а когда я нажимаю прямоугольник и нажимаю рисовать, он стирает предыдущую форму и рисует прямоугольник.

Однако я хочу сохранить все фигуры на JPanel, пока не решу нажать кнопку стирания. Поэтому я удалилsuper.paintComponent(g) и это работает, но это также заставляет кнопки класса Bar появляться вновь в глючной манере. Как я могу остановить кнопки от рисования снова? Я думал не расширять Бар и не заставлять Фу расширять JPanel.

  public class Bar extends JPanel implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {

        if (e.getActionCommand() == "Draw")
        {
            this.requestDraw = true;
            repaint();
        }
            if (e.getActionCommand() == "Circle")
            {
                requestRectangle = false;
                requestTriangle = false;
                requestCircle = true;
            }
            if (e.getActionCommand() == "Rectangle")
            {
                requestCircle = false;
                requestTriangle = false;
                requestRectangle = true;
            }
            if (e.getActionCommand() == "Right Triangle")
            {
                requestCircle = false;
                requestRectangle = false;
                requestTriangle = true;
            }
    }


    public class Foo extends Bar
    {    
        @Override
        public void paintComponent(Graphics g)
        {
            //super.paintComponent(g);
            if(RequestDraw())
            {

                if(RequestCircle())
                    circle.draw(g);
                if(RequestRectangle())
                    rectangle.draw(g);
                if(RequestTriangle())
                    rightTriangle.draw(g);



            }

            if(!RequestDraw())
            {                    


                g.setColor(getBackground());
                g.fillRect(0,0,getWidth(), getHeight());
            }        
        }
    }
}

enter image description here

Ответы на вопрос(2)

Ваш ответ на вопрос