Java » Czyli często zadawane pytania

Zrzut ekranu

Poniższy program jest bardzo prostą implementacją narzędzia do wykonywania zrzutów ekranu. Klasa Screenshoter dostarcza funkcjonalności pozwalające na wykonanie i zapisanie zrzutu we wskazanym miejscu oraz metodę makeAndSave, która łączy obie te funkcjonalności.

package net.programmers.java.faq;
 
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
 
public class Screenshoter {
 
        private Robot robot;
        private int width;
        private int height;
        private Rectangle screenRct;
 
        public Screenshoter() throws AWTException {
                robot = new Robot();
                width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
                height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
                screenRct = new Rectangle(0, 0, width, height);
        }
 
        public void makeAndSave(File target) throws IOException {
                save(target, make());
        }
 
        private void save(File target, BufferedImage image) throws IOException {
                ImageIO.write(image, "jpg", target);
        }
 
        public BufferedImage make() {
                if (robot != null) {
                        return robot.createScreenCapture(screenRct);
                }
                return null;
        }
}


Obsługa wszystkich błędów jakie mogą się pojawić jest przerzucana na kod wykorzystujący tą klasę.
Przykładowy program wykorzystujący tą klasę:
package net.programmers.java.faq;
 
import java.io.File;
import java.util.logging.Logger;
 
public class ScreenShotDemo {
 
        private final static String RESOURCES_DIR = "./src/main/resources";
 
        public static void main(String[] args) throws Exception {
                if(!new File(RESOURCES_DIR).exists()){
                        Logger.getAnonymousLogger().warning("Katalog docelowy nie istnieje! Tworzę nowy katalog!");
                        new File(RESOURCES_DIR).mkdirs();
                }
                (new Screenshoter()).makeAndSave(new File(RESOURCES_DIR + "/screen.jpg"));
        }
}