Foros del Web » Programación para mayores de 30 ;) » Java »

Arrastrar jLabel

Estas en el tema de Arrastrar jLabel en el foro de Java en Foros del Web. Saludos:::: tengo una duda a lo hora de pensar en arrastrar un jLabel, por ejemplo. * El evento que se necesita manejar el es MouseDragged ...
  #1 (permalink)  
Antiguo 30/04/2010, 13:30
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Pregunta Arrastrar jLabel

Saludos::::


tengo una duda a lo hora de pensar en arrastrar un jLabel, por ejemplo.

* El evento que se necesita manejar el es MouseDragged solamente?

alguien tiene algun codigo de ejemplo?

Gracias
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #2 (permalink)  
Antiguo 30/04/2010, 14:03
 
Fecha de Ingreso: diciembre-2009
Mensajes: 137
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Arrastrar jLabel

cordial saludo

tu quieres realizar un editor grafico q agregue algun componete a un formulario????
  #3 (permalink)  
Antiguo 30/04/2010, 14:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 5 meses
Puntos: 454
Respuesta: Arrastrar jLabel

necesitas mouse pressed, mouse dragged y mouse released. El primero para saber cuándo se aprieta el ratón encima del label y se empieza a arrastrar, el segundo para el arrastre y el tercero para saber cuándo termina el arrastre.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 30/04/2010, 14:18
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Arrastrar jLabel

no solo cambiar la posicion de un label con el mouse, he intentado hacer esto:
como estoy usando netbeans, agrego un jlabel de la paleta en el JFrame, luego le doy click derecho al label y selecciono eventos->MouseDragged

y en el metodo que se crea hago esto:
Código JAVA:
Ver original
  1. private void jLabel1MouseDragged(java.awt.event.MouseEvent evt) {
  2.         // TODO add your handling code here:
  3.      
  4.       jLabel1.setLocation(evt.getX(), evt.getY());
  5.      
  6.     }

por que no funciona 100%, es decir a veces no se mueve a la posicion que deberia ser
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #5 (permalink)  
Antiguo 30/04/2010, 22:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 5 meses
Puntos: 454
Respuesta: Arrastrar jLabel

Si es problema de refresco, llama después de moverlo a un jLabel1.updateUI() para obligar al refresco de la pantalla. Puedes hacer un primer intento llamando a repaint(), pero creo que en este caso no funcionaría bien.

Si es por la posición a la que va que está desplazada respecto al ratón, tienes que echar unas cuentas. evt.getX() y evt.getY() con coordenadas relativas al JLabel indican la posición donde has puesto el ratón y setLocation() es para la esquina superior izquierda con coordenadas relativas al interior del JFrame.

En SwingUtilities tienes métodos convert que permite pasar coordenadas relativas de un componente a otro (en tu caso del JLabel al JFrame)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 01/05/2010, 07:38
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Arrastrar jLabel

si no es mucha molestia me puedes ilustrar un poco mas eso de usar SwingUtilities para coordenadas relativas..

Te lo agradezco..
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #7 (permalink)  
Antiguo 01/05/2010, 10:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 5 meses
Puntos: 454
Respuesta: Arrastrar jLabel

Echale un ojo a la API http://java.sun.com/javase/6/docs/ap...Utilities.html y pregunta aquí cualquier duda concreta que tengas.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #8 (permalink)  
Antiguo 05/02/2014, 15:24
Avatar de floppy-dj  
Fecha de Ingreso: diciembre-2006
Ubicación: Huelva
Mensajes: 25
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Arrastrar jLabel

por si a alguien le hace falta todavía yo siempre lo hago de la siguiente forma:

Declaro 2 puntos, el primero para calcular las coordenadas del puntero el segundo para las coordenadas del jlabel y dos variables enteras donde guardo la diferencia de coordenadas entre el puntero y el principio del label, esto lo hago para que cuando pulses y arrastres el label no de un salto hacia el cursor, y por ultimo la variable booleana es para que ésta diferencia solo la calcule la primera vez, sino no se movería.

Código:
//declaracion de variables
    private Point p;
    private Point pl;
    private int lx,ly;
    boolean calcular_diferencia=true;
Una vez creada la etiqueta uso MouseDragged y MousePressed:

Código:
 private void etiquetaMouseDragged(java.awt.event.MouseEvent evt) {                                     
        //calculo la posición del ratón y lo guardo en el p
        p = MouseInfo.getPointerInfo().getLocation();
        
        //este if solo se ejecuta al principio de que empiece a mover la etiqueta
        if(calcular_diferencia){
            //calculo la posición de la etiqueta
            pl = etiqueta.getLocation();
            //guardo la diferencia entre la posición del ratón y de la etiqueta
            lx=p.x-pl.x;
            ly=p.y-pl.y;
        }
        //ponemos false el calculo para que no lo vuelva a calcular otra vez
        calcular_diferencia=false;
        
        //cambio la posición de la etiqueta a la posición del ratón menos la diferencia calculada
        etiqueta.setLocation(p.x-lx, p.y-ly);
    }

cuando sueltes la etiqueta, si vuelves a moverla, la diferencia del ratón con respecto de la etiqueta probablemente haya cambiado, por eso ponemos otra vez true la variable booleana justo al soltar el boton del raton
Código:
private void etiquetaMousePressed(java.awt.event.MouseEvent evt) {                                     
        
        calcular_diferencia=true;

}

Etiquetas: arrastrar, jlabel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:09.