Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Get Point For Centering

/*  * $Id: WindowUtils.java,v 1.16 2009/05/25 16:37:52 kschaefe Exp $  *  * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,  * Santa Clara, California 95054, U.S.A. All rights reserved.  *  * This library is free software; you can redistribute it and/or  * modify it under the terms of the GNU Lesser General Public  * License as published by the Free Software Foundation; either  * version 2.1 of the License, or (at your option) any later version.  *  * This library is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  * Lesser General Public License for more details.  *  * You should have received a copy of the GNU Lesser General Public  * License along with this library; if not, write to the Free Software  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA  */ import java.awt.GraphicsConfiguration; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Window; /**  * Encapsulates various utilities for windows (ie: <code>Frame</code> and  * <code>Dialog</code> 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); }   /**    * <p>    * Returns the <code>Point</code> at which a window should be placed to    * center that window on the screen.    * </p>    * <p>    * 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.    * </p>    *    * @param window The window to calculate the center point for.  This object    *               can not be null.    *    * @return the <code>Point</code> 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;   } }