Utrzymywanie rysowanej grafiki - usuwanie super.paintComponent

Mam klasę o nazwie Foo, która rozszerza klasę o nazwie Bar, która rozszerza JPanel i implementuje ActionListener. Kiedy wybieram Okrąg i klikam przycisk rysowania, rysuję okrąg, a kiedy naciskam prostokąt i klikam rysuj, usuwa poprzedni kształt i rysuje prostokąt.

Chcę jednak zachować wszystkie kształty na JPanelu, dopóki nie kliknę przycisku wymazywania. Więc usunąłemsuper.paintComponent(g) i działa, ale powoduje również, że przyciski baru klasy pojawiają się ponownie w nieprzyjemny sposób. Jak mogę zatrzymać przyciski przed malowaniem? Myślałem, aby nie rozszerzać paska i sprawić, by Foo rozszerzył 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());
            }        
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion