Estoy desarrollando una aplicación Java Swing. ¿Cómo puedo hacerlo para que cuando se abra el programa y las demás ventanas aparezcan en el centro de la pantalla?Center Swing Windows
Respuesta
frame.setLocationRelativeTo(null);
Tendrás que hacerlo a mano, usando setLocation(x,y)
.
Algo así como:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((dim.width-frameWidth)/2, (dim.height-frameHeight)/2);
debería hacerlo (no probado).
hacerlo a mano en un entorno multi-pantalla da algo como esto (estática, porque es probable que lo querría en una clase de utilidad):
public static Rectangle getScreenBounds(Component top){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();
if (top != null){
Rectangle bounds = top.getBounds();
int centerX = (int) bounds.getCenterX();
int centerY = (int) bounds.getCenterY();
for (GraphicsDevice device : gd){
GraphicsConfiguration gc = device.getDefaultConfiguration();
Rectangle r = gc.getBounds();
if (r.contains(centerX, centerY)){
return r;
}
}
}
return gd[0].getDefaultConfiguration().getBounds();
}
public void centerWindowOnScreen(Window windowToCenter){
Rectangle bounds = getScreenBounds(windowToCenter);
Point newPt = new Point(bounds.x + bounds.width/2, bounds.y + bounds.height/2);
Dimension componentSize = windowToCenter.getSize();
newPt.x -= componentSize.width/2;
newPt.y -= componentSize.height/2;
windowToCenter.setLocation(newPt);
}
En cuanto a los botones por defecto, es JDialog.getRootPane().setDefaultButton(btn)
, pero botón tiene que estar ya agregado al diálogo, y visible.
Trabajo con dos pantallas aquí. Uno está incluso verticalmente desplazado. Las respuestas de Camickr/Rehans funcionan para mí. Centra la ventana en la primera pantalla. ¿No es eso lo que tu método intentas lograr? ¿O me estoy perdiendo algo aquí? ¡Gracias! – Riscie
@Riscie no realmente. Mi método está tratando de encontrar en qué pantalla se muestra su componente, para que pueda centrarlo en esta pantalla, no solo en la primera. – Taisin
gracias por aclarar! Bueno, eso es muy necesario! Una pena que esto no se ofrece por defecto! – Riscie
frame.setLocationRelativeTo (null); hacer que el marco abierto en Cetner
Saludos, Rehan Farooq
funcionó para mí! ¡Gracias! – StiGMaT
Es fácil si está utilizando Netbeans. En la ventana de propiedades de JFrame, vaya a "Código" pestaña. Hay una opción como "Generar centro". Marque esa opción. JFrame se mostrará en el centro.
- 1. Obtener directorios incluidos en las bibliotecas de Windows Media Center
- 2. Game Center InviteFailed
- 3. Center UIPickerView Text
- 4. Game Center Formatting Time
- 5. Silverlight: TextBox VerticalContentAlignment = "Center"
- 6. iOS Game Center Group
- 7. Bootstrap center heading
- 8. Center Latex lstlisting
- 9. Programa Java Swing Run cuando se inicia Windows
- 10. Java Swing o Windows Forms para aplicaciones de escritorio?
- 11. Scaling canvas and keeping center
- 12. Autenticando GKLocalPlayer con Game Center
- 13. Reemplazo por <center>
- 14. Reconectar jugador en Game Center
- 15. Cómo sobrescribir td align = "center"?
- 16. IOS Game Center Achievement Upload
- 17. WPF MediaElement se detiene cuando se trata de reproducir archivos de Windows Media Center grabación
- 18. Error de representación de Java Swing en Windows 7 look-and-feel?
- 19. mapas de Google: Conjunto Conjunto Center, Center Point y calar más puntos
- 20. Ventana corrediza Java Swing
- 21. Hibernate + Swing
- 22. Tabla align = "center" no parece estar funcionando
- 23. WPF - Control Center (etiqueta) dentro de lona
- 24. Vertically Center Texto en NSSecureTextField con subclase
- 25. usando text-align center en colgroup
- 26. ¿Existe un Game Center para Android?
- 27. Game Center Encontrar una coincidencia programáticamente
- 28. ¿Hay un css equivalente a 'align = "center"'?
- 29. Usando 10.8 Notification Center en Java
- 30. Game Center - Envío y recepción de datos
¿Funciona también en las versiones anteriores de Java? Estoy sorprendido porque hace un tiempo me di cuenta de que la única forma de hacerlo era "a mano", como se explica aquí: http://www.java2s.com/Code/Java/Swing-JFC/Howtocenteraframeordialog.htm –
Eso es válido a partir de 1.4, pero debe asegurarse de empacar o, en su defecto, dimensionar la pantalla correctamente. – Yishai
No es realmente obvio cuando no lo sabe, pero el comportamiento de [setLocationRelativeTo()] (http://tinyurl.com/34syhcj), con un valor nulo, es, de hecho, centrar la ventana, como se describe en el javadoc. – Gnoupi