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