/** * Runs a sample test procedure * * @param robot the robot attached to the screen device */ public static void runTest(Robot robot) { // simulate a space bar press robot.keyPress(' '); robot.keyRelease(' '); // simulate a tab key followed by a space robot.delay(2000); robot.keyPress(KeyEvent.VK_TAB); robot.keyRelease(KeyEvent.VK_TAB); robot.keyPress(' '); robot.keyRelease(' '); // simulate a mouse click over the rightmost button robot.delay(2000); robot.mouseMove(200, 50); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); // capture the screen and show the resulting image robot.delay(2000); BufferedImage image = robot.createScreenCapture(new Rectangle(0, 0, 400, 300)); ImageFrame frame = new ImageFrame(image); frame.setVisible(true); }
public TransparentWindow(BufferedImage img, int x, int y) { image = img; try { Robot robot = new Robot(); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); screen = robot.createScreenCapture(new Rectangle(0, 0, d.width, d.height)); } catch (AWTException e) { throw new Error(e); } setBounds(x, y, img.getWidth(), img.getHeight()); setVisible(true); buffer = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); graphics = (Graphics2D) buffer.getGraphics(); }
/** * Capture a part of the desktop screen using <tt>java.awt.Robot</tt>. * * @param x x position to start capture * @param y y position to start capture * @param width capture width * @param height capture height * @return <tt>BufferedImage</tt> of a part of the desktop screen or null if Robot problem */ public BufferedImage captureScreen(int x, int y, int width, int height) { BufferedImage img = null; Rectangle rect = null; if (robot == null) { /* Robot has not been created so abort */ return null; } if (logger.isInfoEnabled()) logger.info("Begin capture: " + System.nanoTime()); rect = new Rectangle(x, y, width, height); img = robot.createScreenCapture(rect); if (logger.isInfoEnabled()) logger.info("End capture: " + System.nanoTime()); return img; }
/** * Updates the background. Makes a new screen capture at the given coordiantes. * * @param x The x coordinate. * @param y The y coordinate. */ public void updateBackground(int x, int y) { this.background = robot.createScreenCapture( new Rectangle(x, y, x + this.window.getWidth(), y + this.window.getHeight())); }