jueves, 19 de marzo de 2009

FileDrop: Drag & Drop de archivos fácil en Java

Así es como se presenta éste api, sencillo, de dominio público y muy, pero muy útil.

FileDrop no tiene licencia, es de dominio público y tal como se aclara en su web, podemos hacer lo que se nos antoje con el. El zip de descarga contiene además del jar, el archivo FileDrop.java con toda la funcionalidad embebida para que podamos incluírlo en la ruta de paquetes de alguna aplicación propia sin tener dependencias de jar externos.

Para ver cuan fácil es usar el Drag & Drop de archivos en Java con FileDrop, vamos a ir más alla del ejemplo de su web y vamos a hacer un componente que muestre imágenes y acepte archivos de imagenes "dragueados" desde el sistema. Algo similiar se podría hacer con visores PDF, reproductores multimedia, o cualquier funcionalidad relacionada al drag & drop de archivos integrada a una aplicación Java standalone. En éste link puse el código fuente del ejemplo.

Primero implementmos el visor de imágenes como un componente. También es posible implementar el visor de imagenes extendiendo de JPanel, Canvas o un JLabel en lugar de un JComponent.
Luego es necesario definir una clase que maneje la transferencia del objeto a draguear. Para nuestro propositito sólo se soportará transferencia de objetos java.awt.Image.

Y Finalmente, hacemos uso de FileDrop en el método que instancia nuestro visor de imágenes.

Como se aprecia en el ejemplo, en el método FileDroped del listener se espera un array de objetos File, ésto permite manejar múltiples "dropeos" de archivos. Una aplicación útil podría ser la típica lista de reproducción que al dropear múltiples archivos .mp3 en el contenedor Swing reproduzca el elemento [0] y encole el resto en la lista.

Espero que les sirva y cualquier duda, comenten.

8 comentarios:

  1. Parece interesante.

    Puedes poner un zip con las fuentes y poner alguna captura de pantalla?

    Gracias.

    ResponderEliminar
  2. Se ve Muy bInteresante tu Ejemñplo pero lor lo vito es una aplicacion desktop como hago para ponerlo en funcionamiento si me lo podras mandar a mi correo sdarknot@gmail.com chevere desde ya gracias

    ResponderEliminar
  3. Gracias por comentar.

    Intente darle un mejor formato al codigo fuente para que sea mas legible, pero este no pude darle identación porque blogger me quita los  
    Para mañana prometo pasar el código fuente formateado en un textarea y subirlo a un servidor de archivos para que se lo puedan bajar.

    ResponderEliminar
  4. Muy interesante... gracias

    ResponderEliminar
  5. Gracias, que chido es todo lo que haces, sigue asíiii!!!

    ResponderEliminar
  6. Gracias por el aporte. Pero ando buscando como arrastar un archivo desde mi aplicación al escritorio o a una carpeta: en windows no tengo problemas (creo el archivo cuando salta el evento de getTransferData(DataFlavor flavor) de Transferable y listo) el problema lo tengo en gnome o kde que no sé aun como funciona el asunto y no me funciona el drop and drag hacia fuera. ¿Alguna sugerencia? ¿Algún enlace intersante?

    ResponderEliminar
  7. Fíjate en JDIC https://jdic.dev.java.net
    Posee intregracion al escritorio desde Java. Quiza te brinde solución a lo que quieres hacer.

    ResponderEliminar
  8. Por favor podrias explicarme exactamente que es lo que hace tu ejemplo ... es que no logro correrlo y me gustaria saber si se trata de poder mover imagenes osea drag an drop en un panel... y si es asi de donde cargas esas imagenes...soy muy novato en esto te rogaria me des una explicacion GRACIAS!!!

    ResponderEliminar