2010-03-14 15 views

Respuesta

187

siempre lo hice de esta manera:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); 

donde this es el JFrame involucrados.

+0

Sé que esta respuesta es muy viejo, pero ¿hay alguna manera posible de hacer esto en un contexto estático? Estoy decidiendo entre trabajar para lograrlo o simplemente abandonar el vacío público estático principal (String [] args) que, por la razón que sea, quería usar. – 2xedo

+9

Esto funcionará en una configuración de monitor único, pero con dos monitores puede aparecer entre los dos (suponiendo que tengan la misma resolución). El uso de 'setLocationRelativeTo (null)' lo centrará en el monitor principal incluso en una configuración de múltiples monitores. –

+1

Tenga en cuenta que debe establecer JFrame visible ANTES de centrarlo. –

444

Uso setLocationRelativeTo(null)

Este método tiene un efecto especial cuando se le pasa un null. De acuerdo con Javadoc:

Si el componente es nulo, o la configuración de gráficos asociada con este componente es nula, la ventana se coloca en el centro de la pantalla.

Esto debe hacerse después de ajustar el tamaño o llamando pack(), pero antes de que sea visible, como esto:

frame.pack(); 
frame.setLocationRelativeTo(null); 
frame.setVisible(true); 
+91

+1 si se usa el método pack(), 'setLocationRelativeTo' se debe usar después de llamar al método pack() –

+6

@Imray porque probablemente no funcione con la configuración de monitor doble. : P – Ankit

+16

Parece que ese método debería llamarse después de '.setSize()'. – Kamil

41

Usted puede llamar JFrame.setLocationRelativeTo(null) para centrar la ventana. Asegúrese de poner esto antes de JFrame.setVisible(true)

+15

+1 si se usa el método pack(), 'setLocationRelativeTo' se debe usar después de la llamada al método pack() –

7

estoy usando NetBeans IDE 7.2.1 como mi desarrollador ambiental y allí tiene una opción para configurar las propiedades de JForm.

en las Propiedades JForm vaya a la pestaña 'Código' y configure 'Generar Centro'. primero tendrá que establecer la Política de tamaño de formulario para 'Generar código de cambio de tamaño'.

6

Estoy usando NetBeans IDE 7.3 y esta es la forma de centralizar mi JFrame Asegúrese de hacer clic en JFrame Panel y vaya a la barra de propiedades de JFrame, haga clic en la barra Código y seleccione Generar centro.

9

Tan simple como esto ...

setSize(220, 400); 
setLocationRelativeTo(null); 

o si está utilizando un marco continuación, establezca el marco para

frame.setSize(220, 400); 
frame.setLocationRelativeTo(null); 

Para mayor claridad, from the docs:

Si el el componente es nulo, o la configuración de gráficos asociada con este componente es nula, la ventana se coloca en el centro de la pantalla.

2

Si usa NetBeans, simplemente haga clic en el marco en la vista de diseño, luego en la pestaña del código en sus propiedades. Luego, marca 'Generar Centro'. Eso hará el trabajo.

6

obtendrá el tamaño del conjunto, después de agregar esto:

frame.setLocationRelativeTo(null);

21

basta con hacer clic en la forma y vaya a las propiedades JFrame, luego ficha de código y comprobar Generate Center.

enter image description here

+0

Nunca pensé en esto. De todos modos, ¿qué hay del código que funciona detrás de después de hacer clic en esto ....? @HenkVanBoeijen – gumuruh

1

Puede utilizar este método, que permite que el JFrame a estar centrada y pantalla completa al mismo tiempo.

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH); 
1

Si explícitamente setPreferredSize(new Dimension(X, Y)); entonces es mejor usar:

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);

Cuestiones relacionadas