Centrar un JFrame/JDialog en pantalla
Al crear un nuevo JFrame ó JDialog en Swing, al hacerlos visibles estos aparecerán arriba a la izquierda de nuestra pantalla. Por ejemplo si realizamos:
import javax.swing.JFrame;
public class Prueba{
public static void main(String[] args){
JFrame frame = new JFrame("Prueba JFrame");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
al ejecutarlo, veremos como resultado asÃ:
Si ahora especificamos por medio del método setLocationRelativeTo a null, la ventana se posicionará en el medio de la pantalla. Por lo que si agregamos la siguiente linea:
import javax.swing.JFrame;
public class Prueba{
public static void main(String[] args){
JFrame frame = new JFrame("Prueba JFrame");
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
tendremos un resultado similar a este:
Centrar JDialog en JFrame
Si lo que deseamos es centrar un JDialog en el JFrame “padre”, lo que hacemos es usar el mismo método, pero esta vez especificando que la posicioón de apertura del JDialog será con respecta al JFrame:
import javax.swing.JFrame;
public class Prueba{
public static void main(String[] args){
JFrame frame = new JFrame("Prueba JFrame");
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
final JButton boton = new JButton("Abrir Dialogo");
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog dialogo = new JDialog(frame);
dialogo.setSize(100, 100);
dialogo.setLocationRelativeTo(frame);
dialogo.setVisible(true);
}
});
frame.add(boton);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
los que no da como resultado al hacer click:
Espero les sea de utilidad.
Hasta la próxima.







Tambien me sirvio, ya que estoy trabajando con JFrame principal y ventanas JDialog. Es importante recalcar que el setLocationRelativeTo solo funcionara si lo ponemos luego de un pack() o setSize(), chauuuu
franjo
Mayo 15, 2008
Claro, lo que hace setLocationRelativeTo en el momento que es invocado, pero modificando luego el tamaño del JFrame (ya sea en un pack o setSize) se modificará pero no se autocentrará en la pantalla. En este caso deberá volverse a llamar a setLocationRelativeTo.
Gracias por la aclaración.
lefunes
Mayo 15, 2008
Excelentee
Gracias muy buena informacion
me sirvio de mucho.
ISC. JOLU
Mayo 26, 2008