Como capturas dois cliques do mouse?

Olá, estou desenvolvendo um editor gráfico em java. Uma de suas ferramentas é desenhar um quadrado a partir de dois cliques do mouse, consegui implementar a logica para fazer os quadrados, porem quando eu dou um clique ele considera o x e y desse clique para o segundo clique também. Como faço pra clicar uma vez e ele pegar um valor de x e y e depois clicar em outro local da área e ele pegar outro valor de x e y?

else if (radio_quadrado.isSelected())
{
         x1 = evt.getX();
         y1 = evt.getY();
         System.out.println("Coordenada 1: "+x1+" "+y1);
      
         x2 = evt.getX();
         y2 = evt.getY();
         System.out.println("Coordenada 2: "+x2+" "+y2);
      
         objQuadrado.Quadrado(x1, y1, x2, y2, telaDesenho);
  }

A saida é por exemplo:
Coordenada 1: 262 350
Coordenada 2: 262 350

O valor de um clique ele atribui para o segundo clique também.Texto pré-formatado

Isso é Java Swing? Qual evento você está usando para a captura do clique?

Você precisa de uma forma de saber se o primeiro clique já foi dado. Sem saber como você está estruturando tudo, um jeito simples seria ter uma variável booleana para guardar isso. Algo como:

 if (primeiroClique){
  x1 = evt.getX();
  y1 = evt.getY();
  System.out.println("Coordenada 1: "+x1+" "+y1);
  primeiroClique = false;
}else{
  x2 = evt.getX();
  y2 = evt.getY();
  System.out.println("Coordenada 2: "+x2+" "+y2);
      
  objQuadrado.Quadrado(x1, y1, x2, y2, telaDesenho);
  primeiroClique = true;
}

Abraço.

1 curtida

Estou usando o evento MouseClicked. O que seria a variavel “primeiroClique”?

Consegui resolver de outra forma, muito obrigada.

@AnaCarolina98 pode mandar como ficou a versão final?

1 curtida