Frame
and
* Dialog
objects and descendants, in particular).
*
* @author Richard Bair
*/
public class Utils {
public static Point getPointForCentering(Window window) {
Rectangle usableBounds = getUsableDeviceBounds(window);
int screenWidth = usableBounds.width;
int screenHeight = usableBounds.height;
int width = window.getWidth();
int height = window.getHeight();
return new Point(((screenWidth - width) / 2) + usableBounds.x,
((screenHeight - height) / 2) + usableBounds.y);
}
/**
*
* Returns the Point
at which a window should be placed to
* center that window on the screen.
*
* Some thought was taken as to whether to implement a method such as this, * or to simply make a method that, given a window, will center it. It was * decided that it is better to not alter an object within a method. *
* * @param window The window to calculate the center point for. This object * can not be null. * * @return thePoint
at which the window should be placed to
* center that window on the screen.
*/
private static Rectangle getUsableDeviceBounds(Window window) {
Window owner = window.getOwner();
GraphicsConfiguration gc = null;
if (owner == null) {
gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice().getDefaultConfiguration();
} else {
gc = owner.getGraphicsConfiguration();
}
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
Rectangle bounds = gc.getBounds();
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
return bounds;
}
}