package util; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.HeadlessException; import java.awt.Rectangle; import java.awt.Window; import javax.swing.JOptionPane; /** * An abstract class to organize the GUI. * Currently only provide a method for centering Window-objects. */ public abstract class GuiOrganizer { /** * The rectangle representing the bounds of the primary display */ private static Rectangle rect = null; /** * Gets the bounds of the primary display using * AWT's GraphicsEnvironment class. */ private static boolean getDisplayBounds() { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = null; try { gd = ge.getDefaultScreenDevice(); } catch (HeadlessException he) { he.printStackTrace(); JOptionPane.showMessageDialog(null, "Konnte kein Display ermittelt werden.", "Fehler", JOptionPane.ERROR_MESSAGE); return false; } GraphicsConfiguration gc = gd.getDefaultConfiguration(); rect = gc.getBounds(); if (rect == null) { JOptionPane.showMessageDialog(null, "Konnte die Resolution des Bildschirms nicht ermitteln!", "Fehler", JOptionPane.ERROR_MESSAGE); return false; } else { return true; } } /** * Centers the given Window within the bounds of the display * @param gui The Window object to be centered. */ public static void centerGUI(Window gui) { if (rect == null) getDisplayBounds(); double width = rect.getWidth(); double height = rect.getHeight(); double xPosition = (width / 2 - gui.getWidth() / 2); double yPosition = (height / 2 - gui.getHeight() / 2); gui.setLocation((int) xPosition, (int) yPosition); } }