Java - Posicion JFrame en pantalla

 
Vista:
sin imagen de perfil

Posicion JFrame en pantalla

Publicado por Octavio (74 intervenciones) el 25/11/2009 09:56:49
He creado un codigo que realiza un movimiento suave y continuo de una ventana desde un punto de la pantalla a otro y con determinado retrazo de tiempo el codigo funciona de forma perfecta, pero resulta que cuando se ejecuta se llega a ver cuando la ventana aparece en pantalla y luego comienza el movimiento...

Bueno escribiendo esto se me ocurrio la solucion y posicionar la ventana en un inicio fuera de la pantalla (simple) de esta forma:

java.awt.Dimension pantallaTamano = Toolkit.getDefaultToolkit().getScreenSize();
//con alto y ancho ubicamos la ventana al centro de la pantalla
int ancho = ((pantallaTamano.width/2)-(this.getWidth()/2));
int alto = (pantallaTamano.height/2)-(this.getHeight()/2);
//no se usa alto para poder ubicar la ventana fuera de la pantalla por eso el -1 a continuacion:
this.setLocation(ancho, pantallaTamano.height-1);

BUENO EL COD PARA REALIZAR EL MOVIMIENTO ES EL SIGUIENTE:

/**
*
* @author Octavio Lanzone - Del Campillo - Córdoba - Argentina
* MSN: octicoco@hot... MAIL: octicoco@gma...
*/

import javax.swing.JFrame;

public class moverAutomaticamenteVentana {

/**
* Realiza un movimiento de una ventana por la pantalla
* @param ventana: ventana que se desea mover
* @param desdeX: punto de inicio del movimieto (ubicacion) horizontal
* @param hastaX: punto de fin del movimiento (ubicacion) horizontal
* @param desdeY: punto de inicio del movimieto (ubicacion) vertical
* @param hastaY: punto de fin del movimiento (ubicacion) vertical
* @param demora: demora entre un movimiento y otro (debe ser en milisegundos, 10 esta bien)
Se puede refinar el codigo usando puntos en lugar de enteros... pero se los dejo Uds.
*/
public moverAutomaticamenteVentana(JFrame ventana, int desdeX, int hastaX, int desdeY, int hastaY, int demora){
System.out.println(" desdeX "+desdeX+" hastaX "+hastaX+" desdeY "+desdeY+" hastaY "+hastaY);
ventana.show();
while ((desdeX != hastaX) || (desdeY != hastaY)){
//Movimiento vertical
if (desdeY != hastaY){
try {
Thread.sleep(demora/2);
} catch(Exception e){
e.printStackTrace();
}
if (desdeY < hastaY){
desdeY++;
} else if (desdeY != hastaY){
desdeY--;
}
ventana.setLocation(desdeX, desdeY);
}
//Movimiento horizontal
if (desdeX != hastaX){
try {
Thread.sleep(demora/2);
} catch(Exception e){
e.printStackTrace();
}
if (desdeX < hastaX){
desdeX++;
} else if (desdeX != hastaX){
desdeX--;
}
ventana.setLocation(desdeX, desdeY);
}
}
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder