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.