Problema com mouseDragged

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.

Prezados, problema resolvido em parte. O motivo para a variável ‘inicioLinha’ estar com valo null era que ao adicionar os Listeners eu criava duas instancias da mesma classe ouvinte, uma para addMouseListener e outra para addMouseMotionlistener. Agora, após criar uma unica instancia e compartilha-la com os dois metodos acima, consegui o resultado desejado.
No entanto, descobri agora que meu algoritmo para desenhar as linhas nao funciona como eu gostaria. Ele acaba desenhando varias linhas a medida que novos pontos surgem em mouseDragged, e eu quero apenas que apareça o ‘vulto’ da linha enquanto o mouse estiver pressionado, porém que seja adicinado apenas quando eu soltar o mouse.

Alguma ideia?

Vc tá usando lineTo pra desenhar a linha ?