Centrar un JFrame/JDialog en pantalla

11feb08

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.

About these ads


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

  1. 1 franjo

    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

    • 2 Arturo

      Muchas gracias me haz ahorrado media hora de programacion, muy util no sabia que existiera ese metodo.

    • 3 Nicolaz

      jajaja gracias me salia en el centro no el centro del dialogo sino la primera esquina del dialogo

  2. 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.

  3. 5 ISC. JOLU

    Excelentee

    Gracias muy buena informacion
    me sirvio de mucho.

  4. 6 Ismael

    Gracias por el tip. Ha sido de gran ayuda.

  5. 7 Flipandolo

    Muchisimas gracias, me tenia loco porque no me funcionaba, claro era por que no lo ponia detras de pack()

    Me habeis alegrado el dia!!

  6. 8 Cesar

    Muy buena la ayuda no tenia ni idea de como efectuar el centrado.

  7. Muchas gracias por tu artículo, muy útil y descriptivo.

    Me permito hacer un artículo en mi blog y mencionarte como fuente.

    ¡Saludos y de nuevo gracias!

  8. @Ricardo no hay problema :)

  9. Muchísimas gracias por el consejo.
    Lo estoy utilizando en mi aplicación y funciona de perlas!!

  10. 12 Javix

    Hola una pregunta , como haria para tener deshabilitado los botones de minimizar y maximizar del JFrame.
    Muchas graciasssssssssssssssssssssss

  11. @Javix, para deshabilitar el botón de maximizado y no permitir que el usuario redimencione tu jFrame simplemente realiza un:

    jframe.setResizable(false);
    

    por el lado del botón minimizar la historia es otra. Existen varias soluciones pero dependen de otras variables que no siempre funcionan correctamente (el Look&Feel utilizado por el usuario por ejemplo). Para el caso de tambien querer dejar sin funcionamiento el botón minimizar una buena alternativa es directamente utilizar JDialog en vez de JFrame.

    Saludos

    • Hola Funes, pregunta:

      Si usamos JDialog en lugar de JFrame, ¿se pierde el acceso a las ventanas que están detrás, como en Windows Forms?

  12. 15 Victor Hugo

    Excelente, gracias por la información.

    Hugo

  13. 16 Me

    Muy buena información, desconocia el método.

  14. 17 Fernando Méndez

    Gracias por la información. Me ha sido muy util para detallar la apariencia de mi proyecto.

  15. 18 carlos

    Disculpa mi ignorancia, no tengo mucha experiencia sobre la edición de blogs, pero me parece genial la herramienta para mostrar código. ¿Es nativa de este blog?, o ¿utilizas alguna herramienta?

  16. Hola que tal?.. me parece que no estas centrando ninguna JFrame sino que le estas diciendo que se ubique en el pixel (500,500) de la pantalla el angulo superior izquierdo de este.. y apartir de alli se dibuje.

    La idea de centrar es que el jFrame pueda aparecer en el centro siempre, sin importar la resolucion con la que este la pantalla.XD

  17. Retracto lo dicho… tiene razon señor Le Funes

  18. 21 micki

    Gracias me sivio de mucho!

  19. 22 HombreQRie

    holas tengo un problema, cuando le pongo en run como java aplication , no se ven mis botones que programe

    y cuando pongo como jababeans ahi si se ven , tu sabes por que pasa eso ???

  20. 23 CAPE

    Mis respetos, me ha sido de mucha ayuda. La verdad es la primera vez que envio un comentario.
    Esa si es manera de ayudar, neto gracias

  21. 24 jegnner

    gracias me sirvio mucho !!!

  22. 25 Eddy

    Hola, solo queria agradecerte por este tics, la verdad es q si me estaba costando hacerlo a puro codigo… y todo eso.. como dijeron “NOS ALEGRASTE EL DIA””…

  23. Ha sido de mucha ayuda, cada día se aprende más.
    Saludos

  24. 27 pamela

    si d verdad muy util me sirvio lo q ahora me gustaria saber es como poder cerrar un frame mediante un boton sin q se cierre el frame principal ya q system.exit(0); no me resulta bueno seguire investigando a ver si puedo subir yo misma mi solucion igual si me ayuda alguien s elo agradeceria

  25. 28 pedro

    Hola yo tengo otro problema que espero me sepan resolver.

    Cuando le doy a un boton, se me abre una nueva ventana, y he conseguido que se me habra maximizada segun el tamaño de mi pantalla:
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    this.setSize(d);

    Ahora tengo el problema que los botones, textbox y todo esos componentes, al ser el formulario gigante, se me coloca en la parte superior izquierda…como puedo hacer para que se quede centrado en la pantalla dentro del JDialog?

  26. 29 hp

    bueno amio sabes tus metodos no me ayudan mucho sabes lo intente y no da resultado ps mi ventana JFrame no se centra en mi consola; asi no se si seria mucho pedirte k me envies otra opcion talvez si la hubiese ok gracias

    • Me ayudo mucho tu explicacion, gracias hermano de verdad, solo que no entiendo por que hay gente tan pendeja que comenta que no les sirven tus metodos y aun asi se atreven a pedirte otra opcion :/ , si no te sirve es por que algo estas haciendo mal en alguna parte de tu codigo, solo es cuestion de que le pongas empeño en estructurar tu interfaz y dejes de mamar con ese tipo de comentarios.

  27. 31 CV

    Me muestra este error

    ——————–Configuration: Juego6 – j2sdk1.4.1_04 – ——————–
    D:\Materiales de Programacion\Mis Programas\Java\Juego6\frmInicio.java:19: cannot resolve symbol
    symbol : class JButton
    location: class frmInicio
    final JButton boton = new JButton(“Abrir Dialogo”);
    ^
    D:\Materiales de Programacion\Mis Programas\Java\Juego6\frmInicio.java:19: cannot resolve symbol
    symbol : class JButton
    location: class frmInicio
    final JButton boton = new JButton(“Abrir Dialogo”);
    ^
    D:\Materiales de Programacion\Mis Programas\Java\Juego6\frmInicio.java:20: cannot resolve symbol
    symbol : class ActionListener
    location: class frmInicio
    boton.addActionListener(new ActionListener()
    ^
    3 errors

    Process completed.

  28. 32 Luis

    Buena amigo,gracias por el aporte. bien explicado, como se debe hacerlos tutoriales

  29. 33 yurifull

    muy buen aporte man!! justo lo q queria saber…

  30. Es mas facil centrar las ventanas java con solo la siguiente linea:

    setLocationRelativeTo(null);

    Bye bye!

  31. 36 rafo

    import java.awt.Dimension;
    import java.awt.Toolkit;

    public class menu_principal extends javax.swing.JFrame {
    public menu_principal() {
    initComponents();
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    this.setSize(d);
    }

    Para maximizar una formulario, de tu amigo rafo, si quieres intercambiar o necesitas ayuda en netebeans, escribeme a rafofoxbasic2000@hotmail.com

  32. 37 arkero24

    Gracias genio!!!

    De lo mejor!
    Era una bobada pero el ke no sabe, es como el ke no ve…Gracias a Dios a hay genios como vos!!

  33. 38 Josue

    gracias me sirvio mucho =

  34. 39 Ouro

    Muchas gracias por este consejo tan util, justo lo que buscaba!

  35. 40 Nicolaz

    que pena, es que el dialogo me sale en el centro del fram exactamente. lo que me sale en el centro del frame es la primera esquina del dialogo

  36. COOL, funciona a la perfección, grax desde

  37. 43 Jair

    gracias, lo hacia al calculo d mi monitor 100pr pero cuando kise correrlo en una mini fallo… asi q gracias x la ayuda facil y practik

  38. 44 Smith

    Buen dato. Gracias.

  39. 45 juanra

    buenisimo gracias

  40. 46 usuario

    Muy bueno ;)

  41. 47 Álvaro

    Muchas gracias!

  42. 48 Jorge

    Excelente aporte….gracias :) Soy novato en java…dejo mi correo por si alguien quiere intercambiar info… arrobax4@homail.com

  43. 49 Erick

    Una pregunta como centro un JinternalFrame dentro de un desktop????

  44. 50 MasSoft

    Hola amigos yo tengo un JFrame con controles JPanel y JTextfield y mas y cuando ingreso tu codigo lo ejecuto me muestra el form centrado pero sin nada(sin controles), soy nunevo en esto jeje

  45. 51 josem

    graciass… me sirvio mucho!


  1. 1 Centra un JFrame/JDialog en Java | Código Fantasma
  2. 2 Jframe | TagHall

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: