java - una - Ventanas de giro central
jframe en java ejemplo (5)
Estoy desarrollando una aplicación Java Swing. ¿Cómo puedo hacerlo para que cuando el programa en sí y cualquier otra ventana se abran, aparezcan en el centro de la pantalla?
Es fácil si estás usando Netbeans. En la ventana de propiedades de JFrame vaya a la pestaña " Código ". Hay una opción como "Generar centro". Verifique esa opción. JFrame se mostrará en el centro.
Hacerlo a mano en un entorno de múltiples pantallas proporciona algo como esto (estático, porque probablemente 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 al botón predeterminado, es JDialog.getRootPane().setDefaultButton(btn)
, pero el botón ya debe estar agregado al cuadro de diálogo, y visible.
Tendrás que hacerlo a mano, usando setLocation(x,y)
.
Algo como:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((dim.width-frameWidth)/2, (dim.height-frameHeight)/2);
Debe hacerlo (no probado).
frame.setLocationRelativeTo (null); hacer el marco abierto en cetner
Un saludo, Rehan Farooq
frame.setLocationRelativeTo( null );