Criando interface com suporte Drag and Drop

Olá, eu preciso criar uma interface gráfica que seja drag and drop. O que eu preciso criar é como se fosse uma ferramenta de UML, eu terei que adicionar imagens gráficas, como quadrado e circulos, teria que ligar essas imagens utilizando setas, e tem que ter suporte a possibilidade de arrastar essas imagens na tela. O quadrado e o circulo, por exemplo, tem um determinado significado e quando eu clico neles tem que ter opção para editar valores, como complexidade por exemplo. Mas o meu problema inicial, é como fazer uma interface drag and drop, uma interface que eu adicione os quadrados e tenha a possibilidade de movê-los. Eu nunca trabalhei com interface drag and drop, então estou tendo dificuldade para realizar. Alguém teria alguma dica. Existe alguma ferramenta que forneça a possibilidade de criar interface drag and drop mais facilmente, ou o código tem que ser escrito todo do zero? Alguém teria algum exemplo, ou sabe onde eu posso encontrar? Aguardo. Desde já obrigado.

Se for uma aplicação web, de uma olhada nesse artigo

ele utiliza a biblioteca de componentes do RichFaces

Não é aplicação web. Vou ter que fazer um aplicativo java mesmo, porque ele vai ser ligado com outro programa depois e mais um database.

cara, para desenvolver um programa semelhante eu usei uma biblioteca chamada JGraph.
http://www.jgraph.com/

Ela ajuda bastante, é só ver alguns exemplos

Qualquer dúvida é só perguntar. Tenho alguns exemplos se tu precisar