Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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

Neste artigo começaremos a implementação da camada de transferência.

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

 

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

Por: Francisco Voccio Netto


Começando a implementação da camada de transferência

Precisamos implementar uma classe que seja o gerenciador das transferências. Este gerenciador ficará responsável por ditar as regras do nosso exemplo.

Estarei implementando nossa classe
GerenciadorDeTransferencia.java, sendo que esta classe, por sua vez, deverá implementar a interface Transferable.

Pergunta: Mas porque preciso implementar essa interface?!

Resposta: Precisamos implementar essa interface porque necessitamos definir quais são nossos flavors. Flavors são objetos da classe DataFlavor. Se fôssemos traduzir para o português seria algo como os “sabores”! Sabores lembram escolhas, certo? Muito bem, definimos quais são os tipos de Drag-and-Drop que a nossa aplicação irá obedecer.

Escolheremos o tipo
GerenciadorDeTransferencia.localStringFlavor que possibilitará a transferência de objetos na mesma instância da aplicação.

A implementação é feita como mostra a Listagem 1.

Listagem 1. GerenciadorDeTransferencia.java

package br.javamagazine.dnd;

import java.awt.datatransfer.*;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import br.javamagazine.botoes.Botao;

public class GerenciadorDeTransferencia implements Transferable
{
  public static final DataFlavor localStringFlavor = DataFlavor.stringFlavor;
  public static final DataFlavor[] flavors = { GerenciadorDeTransferencia.localStringFlavor };
  private static final List flavorList = Arrays.asList(flavors);
  private Botao botao;
  private DataFlavor nossaOpcao;

  public GerenciadorDeTransferencia() {
    definirOpcaoDnD();
  }

 

  public GerenciadorDeTransferencia(Botao botao) {

    this();

    this.botao = botao;

  }

 

  private void definirOpcaoDnD() {

 

    try {

      nossaOpcao = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType

          + ";class=br.javamagazine.telas.util.PainelContainer");

    }

    catch (ClassNotFoundException ex) {

      //tratar

    }

  }

 

  public synchronized DataFlavor[] getTransferDataFlavors() {

    return flavors;

  }

 

  public boolean isDataFlavorSupported(DataFlavor flavor) {

    return (flavorList.contains(flavor));

  }

 

  public synchronized Object getTransferData(DataFlavor flavor)

      throws UnsupportedFlavorException, IOException

  {

 

    if (flavor.equals(nossaOpcao)) {

      return this.botao;

    }

    else {

      throw new UnsupportedFlavorException(flavor);

    }

  }

 

  public DataFlavor obterNossaOpcao() {

    return nossaOpcao;

  }

}

Agora que temos nosso gerenciador configurado, podemos dar início às camadas do DnD.

Como o próprio nome já diz, precisamos pensar nas duas faces separadamente: o lado do Drag (desenvolveremos os
DragGestureListener) e o lado do Drop (DropTargetListener).

Essas duas interfaces são de extrema importância para que tenhamos o DnD com uma ótima funcionalidade.

 

 





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Equipe Devmedia

Noticias/Dicas/Artigos pulicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03