
La idea de este ejemplo es ver como mostrar una aplicación Java Swing, en concreto un JFrame, al arrancar, centrado en la pantalla. Además nos vamos a apoyar en el ejemplo Conocer la resolución de la pantalla con Java para darle forma al JFrame que vamos a Centrar.
El procedimiento para centrar un JFrame lo vamos a codificar en el constructor de la clase. Así que lo primero será definir una clase que extienda de JFrame, constructor incluido.
public class CentrarJFrame extends JFrame {
public CentrarJFrame(){...}
}
Dentro del constructor del JFrame utilizamos el método setLocationRelativeTo() de la clase Window. El método setLocationRelativeTo() coloca la ventana en una posición relativa a un componente que le pasemos como parámetro. Pero si le pasamos null como parámetro, coloca a la ventana en el centro de la pantalla. Así ya habremos conseguido centrar un JFrame.
public class CentrarJFrame extends JFrame {
public CentrarJFrame(){
setLocationRelativeTo(null);
}
}
Como comentábamos antes, y apoyándonos en el ejemplo sobre Conocer la resolución de la pantalla con Java vamos a cuadrar el JFrame y haremos que sea la mitad del tamaño de la pantalla… por presentar algo de armonía. :-)
public class CentrarJFrame extends JFrame {
public CentrarJFrame(){
super("Centrar JFrame");
Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);
setVisible(true);
}
}
ernesto
el monitor no me muestra la barra de tarea completa ni el contorno en general cual es la combinacion de teclas para centrar la imagen?
Víctor Cuervo
¿Cuándo hablas de imagen a qué te refieres? ¿Tienes el código?
Yony David
Hola, me surgió una duda, espero que alguien me pueda ayudar, de antemano gracias por prestarme un momento de su atención. Lo que pasa es que estoy trabajando en un JFrame y cuento con «this.setLocationRelativeTo(this);» para que se centre. Pero ahora quiero que se quede centrado y que tenga yo la posibilidad de mover con el cursor la ventana del JFrame para donde quiera.
¿Si es posible?, y ¿Cual seria el código faltante para lograrlo?
CARLOS
PERFECTO, HA FUNCIONADO CORRECTAMENTE
Víctor Cuervo
Nos alegra mucho que te haya servido Carlos. :-D
cristhian
hola ouro ns si te conviene hacer eso con las ventanas proba haciendo esto:
new menu().show();///la pantalla q quieres llamar
this.dispose();///con esto sierras y liberar la pantalla donde estabas
espero te sirva saludos
cristhian
muy buen aporte gracias
Ouro
No esta mal el truco, yo estoy haciendo una aplicacion que primero tiene una ventana de login y luego cuando conecta le hago setVisible(false) y pongo la otra ventana, esta bien ese truco o hay alguna manera mejor?
lineadecodigo
@André,
Me alegro que te haya servido. :-)
André
Muchas gracias lineadecodigo, era justo lo que buscaba. Un saludo desde Lima.
daniel loza
hola estoy en eclipse. visual class, con nombre: Clase01, he copiado el codigo en un void y luego lo invoco desde el constructor, cuando lo ejecuto no sale centrado….por que?..gracias