Java examples for Swing:Screen
To make sure the rectangle has overlap with the screen bounds.
/*//w w w . jav a 2 s.c om * @(#)PortingUtils.java 4/12/2006 * * Copyright 2002 - 2006 JIDE Software Inc. All rights reserved. */ //package com.java2s; import javax.swing.*; import java.awt.*; public class Main { /** * To make sure the rectangle has overlap with the screen bounds. * * @param invoker the invoker component * @param rect the rectangle * @return the rectangle that has overlap with the screen bounds. */ public static Rectangle overlapWithScreenBounds(Component invoker, Rectangle rect) { Rectangle screenBounds = getScreenBounds(invoker); Point p = rect.getLocation(); if (p.x > screenBounds.x + screenBounds.width) { p.x = screenBounds.x + screenBounds.width - rect.width; } if (p.y > screenBounds.y + screenBounds.height) { p.y = screenBounds.y + screenBounds.height - rect.height; } if (p.x + rect.width < screenBounds.x) { p.x = screenBounds.x; } if (p.y + rect.height < screenBounds.y) { p.y = screenBounds.y; } return new Rectangle(p, rect.getSize()); } /** * Gets the screen bounds. In JDK1.4+, the returned bounds will exclude task bar area on Windows OS. If the invoker * is null, the whole screen bounds including all display devices will be returned. If the invoker is not null and * the useInvokeDevice flag is true, the screen of the display device for the invoker will be returned. * * @param invoker the invoker component * @param useInvokerDevice the flag to return invoker device or not * @return the screen bounds. */ public static Rectangle getScreenBounds(Component invoker, boolean useInvokerDevice) { // to handle multi-display case Rectangle bounds = (!useInvokerDevice || invoker == null || invoker .getGraphicsConfiguration() == null) ? (Rectangle) getScreenBounds() .clone() : invoker.getGraphicsConfiguration().getBounds(); // TODO // jdk1.4 only if (invoker != null && !(invoker instanceof JApplet) && invoker.getGraphicsConfiguration() != null) { Insets insets = Toolkit.getDefaultToolkit().getScreenInsets( invoker.getGraphicsConfiguration()); bounds.x += insets.left; bounds.y += insets.top; bounds.width -= insets.left + insets.right; bounds.height -= insets.top + insets.bottom; } return bounds; } /** * Gets the screen bounds. In JDK1.4+, the returned bounds will exclude task bar area on Windows OS. * <p/> * By default, it will not use invoker graphic device automatically. * * @param invoker the invoker component * @return the screen bounds. * @see #getScreenBounds(java.awt.Component, boolean) */ public static Rectangle getScreenBounds(Component invoker) { return getScreenBounds(invoker, false); } private static Rectangle getScreenBounds() { Rectangle SCREEN_BOUNDS = new Rectangle(); GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (GraphicsDevice gd : gs) { GraphicsConfiguration gc = gd.getDefaultConfiguration(); SCREEN_BOUNDS = SCREEN_BOUNDS.union(gc.getBounds()); } return SCREEN_BOUNDS; } }