Для получения скриншота можно использовать метод Robot::createScreenCapture
, который возвращает BufferedImage
для заданного прямоугольника Rectangle
(курсор мыши не будет присутствовать)
Получить координаты прямоугольника можно при помощи метода Toolkit::getScreenSize
Для сохранения BufferedImage
в виде картинки требуемого формата можно использовать метод ImageIO::write
Для отдельного JFrame
можно взять его координаты JFrame::getBounds
Вариант решения:
public static void saveScreenshot(String pngFilename) throws IOException {
saveScreenshot(pngFilename, new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
}
public static void saveFrameImage(String pngFilename, JFrame frame) throws IOException {
saveScreenshot(pngFilename, frame.getBounds());
}
private static void saveScreenshot(String pngFilename, Rectangle rect) throws IOException {
BufferedImage image = new Robot().createScreenCapture(rect);
ImageIO.write(image, "png", new File(pngFilename));
}