Вот ответ для Windows (не уверен, что alt + printScr работает на Linux: P)
Я думаю, один из способов достижения этого
1. использование класса Robot для запуска команды alt + printScreen (захватывает активное окно в буфер обмена)
2. читать в буфер обмена!
Вот две части кода, которые делают это. Я на самом деле не пытался, но то, что я собрал воедино.
Команды Code to Fire для получения активного окна в буфере обмена
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class ActiveWindowScreenShot
{
/**
* Main method
*
* @param args (not used)
*/
public static void main(String[] args)
{
Robot robot;
try {
robot = new Robot();
} catch (AWTException e) {
throw new IllegalArgumentException("No robot");
}
// Press Alt + PrintScreen
// (Windows shortcut to take a screen shot of the active window)
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_PRINTSCREEN);
robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
robot.keyRelease(KeyEvent.VK_ALT);
System.out.println("Image copied.");
}
}
Код для чтения изображения в буфере обмена
// If an image is on the system clipboard, this method returns it;
// otherwise it returns null.
public static Image getClipboard() {
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
try {
if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
Image text = (Image)t.getTransferData(DataFlavor.imageFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
}
return null;
}
Вы можете управлять контролем так, как вам нужно! Дайте мне знать, если это работает для вас. но это, конечно, моя задача - попробовать!