[code]public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRect(0, 8, 250, 34);
for(int i = 0; i<stack.size(); i++)
{
stack.elementAt(i).desenhar(g);
if(stack.elementAt(i).colorir)
stack.elementAt(i).colorir(g, stack.elementAt(i).getX(), stack.elementAt(i).getY());
}
repaint();
}
class Listener implements ActionListener
{
public JButton b;
private Mouse mouse;
public Listener(JButton b)
{
this.b = b;
}
public void actionPerformed(ActionEvent e)
{
addMouseListener(mouse = new Mouse());
mediator.setDisable(buttons, b);
Poligono.desenhar = true;
if(b == desfazer)
{
mediator.setEnable(buttons);
stack.remove(stack.lastElement());
/*stack.iterator().next();
if(stack.iterator().next() == stack.lastElement())
stack.iterator().remove();*/
}
if(b == desfazerCirculo)
{
mediator.setEnable(buttons);
}
}
class Mouse implements MouseListener
{
public void mouseClicked(MouseEvent e) {
if(b == quadrado && Quadrado.desenhar)
{
stack.push(new Quadrado(e.getX(), e.getY(), 50, 50));
Poligono.desenhar = false;
mediator.setEnable(buttons);
removeMouseListener(mouse);
}
else if(b == circulo && Circulo.desenhar)
{
stack.push(new Circulo(e.getX(), e.getY(), 50, 50));
Poligono.desenhar = false;
mediator.setEnable(buttons);
removeMouseListener(mouse);
}
else if(b == pintar)
{
for(int i = 0; i<stack.size(); i++)
{
if(e.getX()>= stack.elementAt(i).getX() && e.getY()>=stack.elementAt(i).getY() && e.getX()<=(stack.elementAt(i).getX()+stack.elementAt(i).getWidth()) && e.getY()<=(stack.elementAt(i).getY()+stack.elementAt(i).getHeight()))
{
stack.elementAt(i).colorir = true;
}
}
mediator.setEnable(buttons);
removeMouseListener(mouse);
}
}[/code]
Esse código é parte dum trabalho que tenho que entregar. Estou com alguns problemas: deveria ser feita uma pilha de figuras, o que eu fiz (chamei a classe de Polígono). Nesse mini-paint devem existir métodos de desfazer a última figura, desfazer o último quadrado e desfazer o último círculo. O problema está na implementação desses 2 segundos métodos, pois eu não tenho idéia de como ler da pilha se o Poligono é um círculo ou quadrado. Além disso gostaria de ter uma orientação para percorrer e remover elementos da pilha usando Iterator, visto que é um dos requisitos do trabalho.
Obrigado