Here you can find the source of packAndCenterWindow(Window dlg)
static public void packAndCenterWindow(Window dlg)
//package com.java2s; /*//ww w. j av a 2 s .c o m The Martus(tm) free, social justice documentation and monitoring software. Copyright (C) 2001-2007, Beneficent Technology, Inc. (The Benetech Initiative). Martus is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version with the additions and exceptions described in the accompanying Martus license file entitled "license.txt". It is distributed WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, including warranties of fitness of purpose or merchantability. See the accompanying Martus License and GPL license for more details on the required license terms for this software. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. To the extent this copyrighted software code is used in the Miradi project, it is subject to a royalty-free license to members of the Conservation Measures Partnership when used with the Miradi software as specified in the agreement between Benetech and WCS dated 5/1/05. */ import java.awt.Dimension; import java.awt.GraphicsConfiguration; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Window; import javax.swing.JFrame; public class Main { static public void packAndCenterWindow(Window dlg) { dlg.pack();//JAVA bug requires two packs to really get the correct dimensions dlg.pack(); Dimension size = dlg.getSize(); Dimension viewableScreenSize = getViewableScreenSize(); if (size.height > viewableScreenSize.height) size.height = viewableScreenSize.height; if (size.width > viewableScreenSize.width) size.width = viewableScreenSize.width; Rectangle newScreen = getViewableRectangle(); dlg.setSize(size); dlg.setLocation(center(size, newScreen)); } static public Dimension getViewableScreenSize() { Dimension screenSizeExcludingToolbars = Toolkit.getDefaultToolkit().getScreenSize(); Insets insets = getSystemInsets(); screenSizeExcludingToolbars.width -= (insets.left + insets.right); screenSizeExcludingToolbars.height -= (insets.top + insets.bottom); return screenSizeExcludingToolbars; } static public Rectangle getViewableRectangle() { Insets insets = getSystemInsets(); return new Rectangle(new Point(insets.left, insets.top), getViewableScreenSize()); } static public Point center(Dimension inner, Rectangle outer) { int x = (outer.width - inner.width) / 2; int y = (outer.height - inner.height) / 2; return new Point(x + outer.x, y + outer.y); } private static Insets getSystemInsets() { JFrame tmpFrame = new JFrame(); GraphicsConfiguration graphicsConfig = tmpFrame.getGraphicsConfiguration(); Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(graphicsConfig); return insets; } }