Centrar un JFrame/JDialog en pantalla

Posted on Febrero 11, 2008. Filed under: JFrame, Java, Swing | Tags: , , , |

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í:

JFrame en posicion de apertura por defecto

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:

JFrame abierta en el centro de la pantalla

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:

JDialog centrado en JFrame

Espero les sea de utilidad.

Hasta la próxima.

Make a Comment

Make A Comment: ( 3 so far )

blockquote and a tags work here.

3 Responses to “Centrar un JFrame/JDialog en pantalla”

RSS Feed for Le Funes Comments RSS Feed

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

Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...