Сохранение рисования графики - удаление 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());
}
}
}
}