Mantener gráficos de dibujo - eliminando super.paintComponent
Tengo una clase llamada Foo que extiende una clase llamada Bar que extiende JPanel e implementa ActionListener. Cuando selecciono Círculo y hago clic en el botón de dibujar, dibujo un círculo, y cuando presiono el rectángulo y hago clic en dibujar, se borra la forma anterior y se dibuja un rectángulo.
Sin embargo, quiero mantener todas las formas en el JPanel hasta que elija hacer clic en el botón de borrar. Así que quité lasuper.paintComponent(g)
y funciona, pero también hace que los botones de la barra de clase vuelvan a aparecer de manera defectuosa. ¿Cómo puedo evitar que los botones vuelvan a pintarse? Estaba pensando en no extender Bar y hacer que Foo extienda a 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());
}
}
}
}