Boa noite Prezados,
Deparei-me com um problema na utilização do evento mouseDragged, e até agora, após muita pesquisa, não consegui achar a solução. O problema é o seguinte: tenho uma aplicação que possui uma área (JPanel) para desenho. Nessa área quero poder desenhar linhas (Line2D) clicando num ponto e arrastando, semelhante ao que ocorre no famoso Paint. Minha ideia é criar duas variáveis de instancia que armazenem, uma o ponto inicial da linha através de mousePressed, e a outra os pontos resultantes do mouseDragged, ao mesmo tempo que vou repintando o JPanel pra dar aquele mesmo efeito do Paint. Porém, o que ocorre é que após o evento mousePressed guardar o ponto correspondente na variavel de instancia ‘inicioLinha’, ao começar o evento mouseDragged, simplesmente a variável ‘inicioLinha’, que já havia sido inicializada com o evento mousePressed, assume o valor null! Não consigo entender o porque isso está acontecendo. Segundo meu raciocínio, o normal seria que após a variável ‘inicioLinha’ ser inicializada no evento mousePressed, ao começar o evento mouseDragged, seu valor (o da variável) continuasse o mesmo valor que fora previamente inicializado, e não null!
Abaixo, um trecho do código:
public class ouvintePainelSimulacao extends MouseAdapter{
private JanelaSimulacao janela;
private Ambiente ambiente;
public Point inicioLinha;
private Point fimLinha;
public ouvintePainelSimulacao(JanelaSimulacao janela, Ambiente ambiente){
this.janela = janela;
this.ambiente = ambiente;
}
@Override
public void mouseClicked(MouseEvent e) {
ambiente.adicionarRadio(0,0,0,0, e.getPoint());
janela.getPainelSimulacao().setImagem(ambiente.getImagemAmbiente());
janela.getPainelSimulacao().repaint();
janela.getBarraStatus().setText("Rádio Adicionado em [" +
e.getPoint().x + " ; " + e.getPoint().y + "]");
}
@Override
public void mouseMoved(MouseEvent e) {
janela.getBarraStatus().setText("Localização: " + "[" + e.getPoint().x +
" ; " + e.getPoint().y + "]");
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("Mouse Pressed!\nX: "+e.getX()+" ; Y: "+e.getY());
inicioLinha = e.getPoint();
}
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("Mouse Dragged!\nX: "+e.getX()+" ; Y: "+e.getY());
System.out.println("Mouse Pressed and Dragged!\n: "+inicioLinha); // Isso aqui resulta em 'null'
}
}
Por favor, se alguém souber me explicar o que está acontecendo de errado, ficarei muito grato.