A menudo me siento en la necesidad de centrar una ventana cuando trabajo en Swing. En muchos foros se muestra la manera de obtener la altura y anchura de la ventana, la posición de la ventana padre, y realizar complejos cálculos en base a éstas para obtener una ventana centrada.

Es triste pensar que la gente que ha hecho java no haya dedicado tiempo a algo tan trivial como centrar una ventana.

Y lo han hecho.

De hecho, han ido más lejos: dependiendo de cómo esté configurado tu sistema, centrará la ventana en la ventana padre, en el centro de la pantalla o no la centrará en absoluto. La gente tiende a olvidar que hay masoc…… otra gente que no usa Gnome, KDE, Windows o Mac, sino que también usan Window Maker, LXDE, …. Y otros renderers aún más extraños.

Por eso, la manera correcta de centrar un diálogo o ventana en Java es marcar la propiedad “setLocationByPlatform”:

mywindow.setLocationByPlatform ( true );

De manera que, dependiendo del sistema y de si establecimos el padre de una ventana, la ventana se centrará donde debe.