Boa tarde povo do GUJ,
Estou tentando fazer uma ferramenta borracha que remove os pontos de uma forma, para fazer isso criei os seguintes metodos:
//Para desenhar o quadrado branco da borracha
public void mouseMoved(MouseEvent e) {
gp.reset();
gp.moveTo(e.getX()-metadeTamanho, e.getY()-metadeTamanho);
gp.lineTo(e.getX()+metadeTamanho, e.getY()-metadeTamanho);
gp.lineTo(e.getX()+metadeTamanho, e.getY()+metadeTamanho);
gp.lineTo(e.getX()-metadeTamanho, e.getY()+metadeTamanho);
gp.closePath();
this.areaDesenho.repaint();
System.out.println("Mouse moved");
}
//Para remover os pontos
public void mousePressed(MouseEvent e) {
for(int i = 0; i < this.areaDesenho.getFormas().size(); i++)
{
int teste = 0;
FormaGeometrica forma = this.areaDesenho.getFormas().get(i);
for(int j = 0; j < forma.getPontos().size(); j++)
{
Point ponto = forma.getPontos().get(j);
if(gp.contains(ponto.getX(),ponto.getY()))
{
forma.removePontos(ponto);
System.out.println(ponto.x+","+ponto.y);
}
}
}
this.areaDesenho.repaint();
}
O problema é que ele não remove todos os pontos dentro do quadrado no primeiro click, eu percebi um certo tipo de padrão onde se eu tiver apenas um ponto dentro do quadrado ele remove, se tiver 2 ele remove somente o primeiro, se tiver 3 ele remove apenas o primeiro e o terceiro e se tiver 4 ele remove o 1,2,4. Lembrando que todos os pontos estão na mesma forma. Ainda não consegui explicar o que está acontecendo, parece ser um erro bobo mas preciso que outra pessoa olhe o código.
Obrigado!