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;
* Helper utilities for working with Swing.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
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.
*
* 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);
+ }
+
}