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í:
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.
Filed under: Java, JFrame, Swing | 54 Comments
Etiquetas: Java, jdialog, JFrame, Swing
Más sencillo era.. botón derecho sobre el JFrame -> Properties, Solapa «Code», opción.. «Generate Center».. la tildamos.. y Chau! 😉 (Lo descubrí por pasear en las opciones xD)
graciass… me sirvio mucho!
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
Una pregunta como centro un JinternalFrame dentro de un desktop????
Excelente aporte….gracias 🙂 Soy novato en java…dejo mi correo por si alguien quiere intercambiar info… arrobax4@homail.com
Muchas gracias!
Muy bueno 😉
buenisimo gracias
Buen dato. Gracias.
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
COOL, funciona a la perfección, grax desde
Gracias!
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
Muchas gracias por este consejo tan util, justo lo que buscaba!
gracias me sirvio mucho =
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!!
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
Es mas facil centrar las ventanas java con solo la siguiente linea:
setLocationRelativeTo(null);
Bye bye!
Pero si eso es lo que dice el articulo!
muy buen aporte man!! justo lo q queria saber…
Buena amigo,gracias por el aporte. bien explicado, como se debe hacerlos tutoriales
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.
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.
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?
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
Ha sido de mucha ayuda, cada día se aprende más.
Saludos
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»»…
gracias me sirvio mucho !!!
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
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 ???
Gracias me sivio de mucho!
Retracto lo dicho… tiene razon señor Le Funes
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
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?
Gracias por la información. Me ha sido muy util para detallar la apariencia de mi proyecto.
Muy buena información, desconocia el método.
Excelente, gracias por la información.
Hugo
@Javix, para deshabilitar el botón de maximizado y no permitir que el usuario redimencione tu jFrame simplemente realiza un:
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?
Hola una pregunta , como haria para tener deshabilitado los botones de minimizar y maximizar del JFrame.
Muchas graciasssssssssssssssssssssss
Muchísimas gracias por el consejo.
Lo estoy utilizando en mi aplicación y funciona de perlas!!
@Ricardo no hay problema 🙂
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!
Muy buena la ayuda no tenia ni idea de como efectuar el centrado.
Muchisimas gracias, me tenia loco porque no me funcionaba, claro era por que no lo ponia detras de pack()
Me habeis alegrado el dia!!
Gracias por el tip. Ha sido de gran ayuda.
Excelentee
Gracias muy buena informacion
me sirvio de mucho.
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.
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
Muchas gracias me haz ahorrado media hora de programacion, muy util no sabia que existiera ese metodo.
jajaja gracias me salia en el centro no el centro del dialogo sino la primera esquina del dialogo