Imprimir VIEW

Boa tarde, é possível imprimir uma view direto do java? Estou pensando em utilizar essa função se existir para fazer relatórios! Se tiverem outras ideias estou disposto a aceitar, obrg. E lembrando utilizando banco de dados mysql, para imprimir tais ações.

Sim, todo componente possui um método paint(Graphics), então se você quer imprimir uma janela inteira, por exemplo, você vai criar um objeto BufferedImage, criar um Graphics a partir do BufferedImage e aí mandar a janela se pintar no graphics dessa forma:
minhaJanela.paint(meuObjetoGraphics);

Feito isso, é só salvar o objeto BufferedImage em arquivo.

Abaixo um método pronto que faz isso:

void gravarImagem(Component componente, String tipo, String arquivo) {
	try {
		Dimension tamanho = componente.getSize();
		BufferedImage imagem = new BufferedImage(tamanho.width,
		                                         tamanho.height,
					                 BufferedImage.TYPE_INT_RGB);
		Graphics2D graphics = imagem.createGraphics();
		componente.paint(graphics);
		ImageIO.write(imagem, tipo, new File(arquivo));
	} catch(Exception e) {
		e.printStackTrace();
	}
}

Exemplo de uso
gravarImagem( meuComponente, "png", "arquivo.png" )

1 curtida