// TODO: hide on mouse over static BlinkScreenArea blinkScreenArea(Rectangle r) { ret new BlinkScreenArea(r).go(); } sclass BlinkScreenArea { int count, max = 12; int delay = 150; BufferedImage img, img2; JWindow window; JLabel lbl; Rectangle area; *(Rectangle r) ctex { // clip to screen Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize (); r = new Rectangle(screenSize).intersection(r); area = r; new Robot robot; img = robot.createScreenCapture(r); img2 = changeBrightness(img, 2f); img = changeBrightness(img, 0.5f); } BlinkScreenArea go() { awt { // make JWindow window = new JWindow; window.setBounds(area); lbl = new JLabel(new ImageIcon(img2)); window.add(lbl); window.setAlwaysOnTop(true); window.setVisible(true); installTimer(lbl, delay, r { step(); }); } ret this; } void step() { ++count; if (count > max) print("huh?"); else if (count == max) window.dispose(); // should stop timer too else lbl.setIcon(new ImageIcon((count & 1) == 0 ? img : img2)); } }