我有一个名为Foo的类,该类扩展了一个名为Bar的类,该类扩展了JPanel并实现了ActionListener.当选择“圆”并单击“绘制”按钮时,将绘制一个圆,当按矩形并单击“绘制”时,它将擦除先前的形状并绘制一个矩形.
但是,我希望将所有形状保留在JPanel上,直到选择单击“擦除”按钮.因此,我删除了super.paintComponent(g)并使其工作,但是它也导致Bar类的按钮以小故障的方式重新出现.如何停止重新绘画按钮?
我当时在考虑不扩展Bar并使Foo扩展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());
}
}
}
}