Drag and drop
Drag and Drop (Arrastrar y Soltar)
Contenido [ocultar] * 1 Conceptos generales * 2 Creando nuestro propio Transferable... * 3 Arrastrando y soltando en AWT... * 3.1 Un par de conceptos... * 3.2 Un diagrama con las clases que intervienen en el asunto... * 3.3 Un ejemplo sencillo de como se implementaria... *3.3.1 Las clases para arrastrar * 3.3.2 Las clases para soltar * 4 Arrastrando y soltando en Swing... * 5 Usando el portapapeles... |
-------------------------------------------------
Conceptos generales
* Un objeto entre aplicaciones se puede pasar, principalmente, de dos formas
* Arrastrarlo de un origen hasta un destino
* Copiarlo al portapapeles desde un origen y pegarlodesde el portapapeles en un destino
* Ambas posibilidades necesitan envolver el dato en cuestión en un objeto que implemente Transferable
* El dato se encapsula en un Transferable
* Mediante la clase DataFlavor se indica a que tipos de datos se puede convertir ese Transferable
* Un fichero se puede querer desenvolver como un tipo File para un explorador de ficheros,* o como un tipo String con el nombre del fichero para meter en un campo de texto...
* En windows, al arrastrar, se puede realizar tres acciones según se pulsen las teclas SHIFT o CONTROL
* Se copia un objeto si al soltar, está pulsada la tecla CONTROL
* Se mueve un objeto si al soltar, está pulsada la tecla SHIFT
* Se enlaza un objeto si al soltar, están pulsadaslas teclas SHIFT y CONTROL
-------------------------------------------------
Creando nuestro propio Transferable...
* Java proporciona una clase: StringSelection que implementa esta interfaz cuando el dato envuelto es un String
* Basicamente se trata de guardar una instancia del dato y de proporcionar informacion sobre las clases a las que se puede convertir
* DataFlavor es la claseque se usa para realizar esta labor
* Se construye con un cadena de la siguiente forma: "tipo MIME;class=paquete.claseJava"
* Por defecto, están definidos como estáticos varios tipos en DataFlavor
* DataFlavor.imageFlavor
* DataFlavor.stringFlavor
* DataFlavor.javaJVMLocalObjectMimeType
* DataFlavor.javaRemoteObjectMimeType
*DataFlavor.javaSerializedObjectMimeType
* Por ejemplo, DataFlavor.imageFlavor es: new DataFlavor("image/x-java-image;class=java.awt.Image")
* Aqui se puede ver un ejemplo de como se implementaría un transferable para una imagen.ImageSelection.java
-------------------------------------------------
Arrastrando y soltando en AWT...
-------------------------------------------------
Un par de conceptos...
* Elorigen del arrastre es un objeto de la clase DragSource
* El destino al soltar es un objeto de tipo DropTarget
* Tanto origen como destino tienen unos listener asociados a los que indican que está ocurriendo en cada momento
* Se notifican cosas como que el ratón ha abandonado el origen de arrastre, ha entrado en el destino de soltar...
* Al destino y al origen se le asocian elementosde la interfaz gráfica que heredan de Component
* Además en el caso de arrastrar existe una clase DragGestureListener que decide si lo que hace el usuario se debe interpretar como arrastrar o no
-------------------------------------------------
Un diagrama con las clases que intervienen en el asunto...
-------------------------------------------------
Un ejemplo sencillo de como seimplementaria...
Las clases para arrastrar
* DragGestureListener.java
* DragSourceListenerEjemplo.java
* MainDrag.java
Las clases para soltar
* DropTargetListenerEjemplo.java
* MainDrop.java
-------------------------------------------------
Arrastrando y soltando en Swing...
* Swing simplifica el proceso de arrastrar y soltar/copiar y pegar
* Para que un componente...
Regístrate para leer el documento completo.