Drag & Drop en java

Buscando en internet, informacion sobre drag & drop en java, me he topado con que no hay mucha informacion! :S y lo que encontraba eran unos codigos tan largos y tediosos! pero esta vez, me toco que trabajar, y ni modo, tuve que encontrar una forma mas facil, y pues, la verdad no esta tan dificil!🙂 solo es de manejar los eventos del mouse en java🙂

  • Un pequeño ejemplo:

Usando el evento pressed del mouse, capturamos la posicion inicial de nuestra figura, en este caso trabajare con un boton

private void formMousePressed(java.awt.event.MouseEvent evt) {
          btn_drag.setBounds(evt.getX(), evt.getY(), 100, 60);
}

Con el evento Dragged del mouse, vamos capturando las posiciones en las que se va moviendo en el recorrido nuestra figura.

private void formMouseDragged(java.awt.event.MouseEvent evt) {
         btn_drag.setBounds(evt.getX(), evt.getY(), 100, 60);
}

Y por ultimo para la posicion final en donde quedara nuestra figura, lo hacemos con el evento Released del mouse.

private void formMouseReleased(java.awt.event.MouseEvent evt) {
          btn_drag.setBounds(evt.getX(), evt.getY(), 100, 60);
}

Y listo! con esto podemos mover cualquier figura, teniendo como parametros nuestras posiciones x, y y.🙂

Si deseas puedes descargar este pequeño ejemplo desde AQUI

Aqui un video del resultado.

15 comentarios (+¿añadir los tuyos?)

  1. Axel Arevalo
    Sep 19, 2011 @ 18:31:34

    Hola Iris, me gusto el post, saludos… =D !

    Responder

  2. Adriana Pinto
    Sep 19, 2011 @ 18:44:36

    Iris… sos el éxito… en medio de proyecto, posteás cosas para ayudar… xD

    Responder

  3. Yorsh
    Nov 11, 2011 @ 10:31:01

    hola! me fuue muy util tu ayuda con este “tutorial”, pro me gustaria saber si sabes como hacer que una ves reposicionado el boton (que es lo que hago en mi caso) quede fijo en la nueva posicion, yaque si minimizo, vuelve a su lugar original.

    Responder

    • irisus90
      Nov 11, 2011 @ 11:45:02

      Hola! En java se manejan mucho los eventos, asi como aqui manejé los eventos del mouse aplicados a los eventos del frame

      Por ejemplo para hacer lo que tu quieres puedes guardar tus ultimas posiciones usadas X, y Y, y luego mandarlo en el evento formComponentResized, para que no se muevan tus posiciones.
      Claro que este es un ejemplo de hacerlo, pueden haber muchas formas más..!

      Saludos!🙂

      Responder

  4. Yorsh
    Nov 16, 2011 @ 10:16:04

    sabes, que? aun no puedo fijar el label a la posicion donde lo deje con el cursor, ojlalá puedas ayudarme un poco mas!

    Responder

    • irisus90
      Nov 16, 2011 @ 13:53:12

      Hola! como te digo yo lo hago asi, con los eventos del form, me dirigo hacia el evento Component Resize, y ahi mando las posiciones que quiero del boton, este evento te va asegurar que cuando el form cambie su tamaño, o en este caso que se minimize, hace las acciones q le mandes a él. Y solo🙂 estes son las lineas:

      private void formComponentResized(java.awt.event.ComponentEvent evt) {
      btn_drag.setLocation(x, y);
      }

      😀

      Responder

  5. miguel
    Nov 16, 2011 @ 16:11:38

    ola tu aporte es weno y tu idea tmb.. pero m gustaria que al momento de hacer click sobre un boton este pueda ser ARRASTRADO por el mouse.. al estilo flash.. tu sabes.. como dice arriba se puede trabajar tmb con los eventos del frame.. wen aporte

    Responder

    • irisus90
      Nov 16, 2011 @ 17:09:33

      Muchas gracias por tu comentario!🙂

      Y Claro, eso lo puedes hacer cambiando el objeto al que le pones los eventos, por ejemplo le puedes agregar estas acciones a los eventos mousePressed, MouseDragged, y MouseRelease al propio boton en vez de al frame.

      Asi cuando presiones y arrastres tu boton, hará estas acciones, de cambiar la posicion.🙂

      Responder

  6. Yeison Soto
    Nov 23, 2011 @ 16:07:22

    Hola irisus90, muy interesante tu explicacion, tengo una duda:
    -Si yo quiero que mi botón u otro objeto, tenga un destino unico por ejemplo que solo pueda ser soltado en un cierto lugar y en otro lugar no pueda soltarse que debo hacer?

    Responder

    • irisus90
      Nov 23, 2011 @ 18:47:23

      Hola! Para esto puedes controlas las coordenadas X, y Y, en la que te estas moviendo atravez de tu panel o frame, por ejemplo si tu area donde quieres posicionar tu mouse esta en el area menor a 200, 150, puedes poner una condicion asi, dentro de tus acciones como normalmente lo haces.

      Si coorX<200 and cooY<150{
      posicionar el boton en x, y
      }

      Responder

  7. fredy
    Mar 24, 2012 @ 11:07:14

    hola iris , me podrias enviar el ejemplo a mi correo??

    Gracias!!

    Responder

    • irisus90
      Mar 24, 2012 @ 11:56:24

      Hola Fredy! He actualizado el post, publique el ejemplo para que lo puedan descargar, espero que sea de tu ayuda, el ejemplo está documentado, cualquier duda me avisas!🙂

      Responder

  8. asdefergie
    Ago 16, 2012 @ 20:59:15

    Iris, ¿casate conmigo?

    Responder

  9. eduardo
    Abr 26, 2013 @ 07:05:41

    Hola iris, muy buen ejemplo, tengo un par de problemitas… cuando presiono en boton se regresa a una posición y también cuando lo presiono y lo muevo se mueve a distintos lugares y no a la dirección que va el mouse cuando lo tiene presionado. espero me ayudes. saludos.

    Responder

  10. jesus
    Ago 19, 2013 @ 12:26:04

    Gracias
    estuve mirando en la pagina oficial y es una cantidad de codigo tremenda

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: