X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fswing%2FSwingUtils.java;h=9c78727b28a6fa07b2932729cd4bbf6494717c7c;hb=058adc15e720d4e02649df2093944b40fe4d386e;hp=b1077766f27f4dba9debe1896a8f442f6a5a93bb;hpb=23aa0ec9da5f8a3e2eefaf2343bc68b88a29096a;p=jSite2.git diff --git a/src/net/pterodactylus/util/swing/SwingUtils.java b/src/net/pterodactylus/util/swing/SwingUtils.java index b107776..9c78727 100644 --- a/src/net/pterodactylus/util/swing/SwingUtils.java +++ b/src/net/pterodactylus/util/swing/SwingUtils.java @@ -20,6 +20,8 @@ package net.pterodactylus.util.swing; import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Window; @@ -31,6 +33,18 @@ import java.awt.Window; */ public class SwingUtils { + /** The screen size. */ + private static Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); + + /** + * Returns the size of the screen. + * + * @return The size of the screen + */ + public static Dimension getScreenSize() { + return new Dimension(screenDimension); + } + /** * Centers the given window on the screen. * @@ -38,9 +52,33 @@ public class SwingUtils { * The window to center */ public static void center(Window window) { - Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameDimension = window.getSize(); window.setLocation((screenDimension.width - frameDimension.width) >> 1, (screenDimension.height - frameDimension.height) >> 1); } + /** + * {@link Window#pack() Packs} the given window and positions it so that its + * center stays the same. + * + * @param window + * The window to pack and recenter + */ + public static void repackCentered(Window window) { + Point center = getCenter(window.getBounds()); + window.pack(); + window.setLocation((center.x - window.getWidth() / 2), (center.y - window.getHeight() / 2)); + window.repaint(); + } + + /** + * Returns the center of the given rectangle. + * + * @param bounds + * The rectangle which center to get + * @return The center of the rectangle + */ + private static Point getCenter(Rectangle bounds) { + return new Point(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2); + } + }