Capturar "print screen" do usuário[resolvido]

Boa Noite,

Preciso salvar um print screen que o usuário executa.

Já achei aqui no fórum como criar uma função que simula o print,
mas não é o que eu preciso,
preciso transformar em imagem o print quando o usuário seleciona o print pelo teclado.

Não sei se isso já foi tratado aqui,
mas realmente não encontrei.

O que encontrei foi o seguinte código:

Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension screenSize = toolkit.getScreenSize();
        Rectangle screenRect = new Rectangle(screenSize);
		
		Robot robot=null;
		try {
			robot = new Robot();
		} catch (AWTException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		BufferedImage image = robot.createScreenCapture(screenRect);

Porém esse código gera um print por um botão,
eu preciso do print de um teclado.

Alguem poderia me ajuda?

Obrigado!

Boa noite!!

Se você quer salvar uma imagem quando o botão PRINTSCREEN for clicado, deve colocar um listener que vai disparar a função de “tirar print” quando a tecla apertada corresponder com KeyEvent.VK_PRINTSCREEN.

Ai é só criar um arquivo de imagem, como o exemplo abaixo:

BufferedImage imagem = robot.createScreenCapture(screenRect); int new_w = 1280, new_h = 768; BufferedImage new_img = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB); Graphics2D g = new_img.createGraphics(); g.drawImage(imagem, 0, 0, new_w, new_h, null); ImageIO.write(new_img, "JPG", new File("src/imgDoPrint.jpg"));

Javax2011,

Obrigado pelo retorno!

Acabei achando um jeito de obter o print do usuário.

Tentei fazer pelo listener mas não consegui.

Segue o código para quem precisar.

Toolkit toolkit = Toolkit.getDefaultToolkit();
		
		Clipboard clip = toolkit.getSystemClipboard();
		
		Transferable clipContents = clip.getContents(null);
		
		BufferedImage image=null;
		try {
			image = (BufferedImage) clipContents.getTransferData(DataFlavor.imageFlavor);
		} catch (UnsupportedFlavorException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}