Drag-And-Drop Aplicações Swing em Java – Parte 01

 

Aprenda a usar as classes de Drag-and-Drop do Java Swing através de um exemplo prático.

Por: Francisco Voccio Netto

O Drag-and-Drop é uma tecnologia amplamente utilizada nos mais diversos sistemas, já que representa para o usuário praticidade, rapidez e fácil assimilação.  Sendo assim, dominar, ou pelo menos, se familiarizar com  esta técnica, é fundamental. Aparentemente, se trata de uma técnica elementar, contudo acabamos esbarrando na escassez de informações fáceis e claras sobre tal técnica. Diante desse cenário, o objetivo desse artigo/tutorial, é ensinar aos leitores, de uma maneira fácil, como utilizar essa ferramenta, através de um exemplo prático. O presente, se destina, principalmente, à programadores com conhecimentos básicos ou avançados e que tenham interesse em desenvolver aplicações JSE, utilizando-se da plataforma JAVA SWING. Apresentarei breves considerações sobre o conceito de Drag-and Drop, para que os leitores possam obter uma visão geral desse aplicativo e, após, ensinarei passo-a-passo todo o trâmite dessa aplicação.

O que é Drag-and-Drop?

Drag-And-Drop, ou simplesmente DnD, como é conhecido, é o evento de arrastar e soltar componentes, propiciando a transferência de objetos de uma maneira mais simples.

Esse tipo de implementação é bastante útil, por exemplo, para os usuários que utilizam aplicações com interface gráfica rica.

Em função da tecnologia Drag-And-Drop estar sempre tentando unir portabilidade à relação entre aplicações distintas, mostrarei um exemplo prático de implementação desta tecnologia usando componentes personalizados.


Exemplo

Basicamente, o exemplo consiste em um mini-editor de imagens geométricas (uma espécie de paint), que se utiliza do DnD para arrastar e soltar as imagens geométricas criadas.

O exemplo está subdividido em pacotes. Partirei da idéia de que todos saibam como criar uma interface gráfica simples (criar um JFrame, adicionar objetos do tipo JPanel ao Container, etc..).

A API dá suporte para vários tipos de implementações, como por exemplo, o “copie e cole” .

Há vários componentes dentro do Swing que já implementam o DnD, como por exemplo, a classe Jpanel. Irei estar mostrando como se criam componentes personalizados e como fazer para que eles se comportem como elementos de transferência dentro do DnD.


“Dissecando” uma aplicação DnD

Primeiro é importante saber quais são os componentes básicos para se obter uma aplicação DnD.

Podemos implementar eventos de transferência de objetos de uma instância de aplicação para outra instância ou simplesmente transferir objetos em uma instância só, como será feito no nosso exemplo.

Uma questão interessante para se levantar é:  Por que estamos falando só em Java Swing e não em AWT? A resposta é simples. Podemos sim, implementar DnD em componentes AWT, porém essa implementação pode ser considerada cara, uma vez que componentes AWT que implementem DnD devem ser isoladamente tratados. Muitos programadores de Java 1.4 ou anteriores, se utilizam deste tipo de implementação, mas como ela é
bastante específica, fica inviável a sua reutilização em outros componentes.

Neste tutorial estaremos utilizando as técnicas utilizadas em Java 1.5 ou superiores.