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());
}
}
}
}