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
| |||
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 |
| |||
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 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 |
| ||||
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. |
| |||
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 |
| ||||
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. |
| ||||
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:
Una vez creada la etiqueta uso MouseDragged y MousePressed://declaracion de variables private Point p; private Point pl; private int lx,ly; boolean calcular_diferencia=true;
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: |