Java examples for Swing:Screen
Gets the screen bounds that contains the rect.
import java.awt.Component; import java.awt.Dimension; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.geom.Area; import java.util.ArrayList; import java.util.List; import javax.swing.JApplet; public class Main{ /**/*from ww w.j a v a2 s .co m*/ * List all all screen bounds NOT considering any insets (e.g. taskbars) */ private static final Rectangle[] SCREENS; /** * List all all screen insets (e.g. taskbars) */ private static Insets[] INSETS; /** * Gets the screen bounds that contains the rect. The screen bounds consider the screen insets if any. * * @param rect the rect of the component. * @param considerInsets if consider the insets. The insets is for thing like Windows Task Bar. * @return the screen bounds that contains the rect. */ public static Rectangle getContainingScreenBounds(final Rectangle rect, final boolean considerInsets) { // check if rect is total on screen // if (SCREEN_AREA.contains(rect)) return SCREEN_AREA; // see if the top left is on any of the screens Rectangle containgScreen = null; Insets insets = null; Point rectPos = rect.getLocation(); for (int i = 0; i < SCREENS.length; i++) { Rectangle screenBounds = SCREENS[i]; if (screenBounds.contains(rectPos)) { containgScreen = screenBounds; insets = INSETS[i]; break; } } // if not see if rect partial on any screen for (int i = 0; i < SCREENS.length; i++) { Rectangle screenBounds = SCREENS[i]; if (screenBounds.intersects(rect)) { containgScreen = screenBounds; insets = INSETS[i]; break; } } // fall back to the first screen if (containgScreen == null) { containgScreen = SCREENS[0]; insets = INSETS[0]; } Rectangle bounds = new Rectangle(containgScreen); if (considerInsets) { bounds.x += insets.left; bounds.y += insets.top; bounds.width -= insets.left + insets.right; bounds.height -= insets.top + insets.bottom; } return bounds; } }