Como criar uma linha e poder movê-la com o mouse

Boa noite pessoal!
Bem, preciso “desenhar” ou criar um linha em um frame onde eu possa movê-la quando eu clicar e arrastar o mouse.
Alguém tem uma idéia?

[]'s

Experimente este teste e, depois, ajuste o posicionamento do mouse sobre o objeto.

package pacote;

import java.awt.Color;
import java.awt.Component;
import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Movimentaçao  extends JPanel  implements MouseListener, MouseMotionListener{
	Panel areaTela;
	JPanel [] retango = new JPanel [4];
	Color [] cores = {Color.blue, Color.green, Color.yellow, Color.red};
	boolean movendo = false;
	int Idx, antX, antY;

	public Movimentaçao(){
    	areaTela = new Panel();
    	areaTela.setBackground(Color.cyan);
    	areaTela.setLayout(null);
    	areaTela.setBounds(0, 0 , 880, 580);
	    int lefo = 10;
	    for (int ix=0; ix<4; ix++){
	    	retango[ix] = new JPanel();
	    	retango[ix].setBounds(lefo, 10, 70, 5);
	    	retango[ix].setBackground(cores[ix]);
	    	retango[ix].addMouseListener(this);
	    	retango[ix].addMouseMotionListener(this);
	    	retango[ix].setName("w" + ix);
	    	areaTela.add(retango[ix]);
	    	lefo +=100;
	    }
	    add(areaTela);

	}
	
    public void mousePressed(MouseEvent evt) { 
		Component compo = evt.getComponent();
		String nome = compo.getName();
		if(nome.charAt(0) != 'w') return;
		Idx = Integer.parseInt(nome.substring(1));
		retango[Idx].setBorder(BorderFactory.createLineBorder(Color.white,2));
		movendo = true;
    	antX = evt.getX();  
        antY = evt.getY();          
    }
    
    public void mouseReleased(MouseEvent evt) {
    	retango[Idx].setBorder(null);
    	movendo = false;
    }
    
    public void mouseDragged(MouseEvent evt) { 
    if (movendo == false) return;
    int x = evt.getX();
    int y = evt.getY();
    int movX = x - antX;
    int movY = y - antY;
    antX = x;
    antY = y;
    Point pnt = null;
	pnt = retango[Idx].getLocation();
	pnt.x += movX;
	pnt.y += movY;
    retango[Idx].setLocation(pnt);
    }
    
    public void mouseMoved(MouseEvent evt) { }
    public void mouseEntered(MouseEvent evt) { }
    public void mouseExited(MouseEvent evt) { }
	public void mouseClicked(MouseEvent evt) { }


	public static void main(String[] args) {
	    JFrame frame = new JFrame("Movimentaçao");
	    frame.add(new Movimentaçao());
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setSize(900, 600);
	    frame.setLocationRelativeTo(null);
	    frame.setVisible(true);
	  }
}

Olá Marcio Lima, obrigado pela atenção!

Bem, algo parecido com o que você me enviou eu até conseguir fazer, o problema é que quando clico na linha e arrasto o ponteiro do mouse não fica junto da linha o tempo todo. Ele fica se distanciando e com uma movimentação bem forçada.
Pesquisei bastante e pelo menos ainda não encontrei, mas eu gostaria de desenhar a linha com o método DrawLine por exemplo e depois movimentá-la. Porém, ainda não tive sucesso.
Na verdade eu preciso desenhar essa linha porque quero criar um simetrógrafo para uma aplicação desktop que estou desenvolvendo e na etapa de avaliação postural preciso que em cima da imagem que eu ja capturo da webcam eu possa habilitar uma grade com linhas onde essas linhas eu possa movimentá-las.

De qualquer maneira, fico muito grato e aguardando mais dicas enquanto não obtenho a solução.

A utilização do método DrawLine NÃO cria um objeto, tornando-se difícil movê-la com o mouse.

Pense em um painel grande (com a imagem e as linhas) embutido em outro painel menor, sendo movimentado pelas barras de rolagem ou pelas setas do teclado ou pelo mouse.