| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 14:00:01
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Pessoal, eu tenho um JFrame que tem um JPanel o qual possui várias JTables e JLabels. Gostaria de imprimir o conteúdo mas não sei se preciso imprimi o conteúdo do JPanel ou do JFrame.
Pesquisei e li muitos materiais porém não sei como fazer para imprimir. Eu queria que ao clicar no botão "Imprimir" chamasse o serviço so sistema operacional para imprimir, mas não sei com fazer isso.
Se alguém puder me ajudar agradeceria.
Abaixo segue minha classe, sendo que o JFrame foi criado usando o NetBeans e o resto por código.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 15:56:12
|
visola
JavaGuru
![[Avatar]](/images/avatar/d3dd22a54983c30e02c9c0cf04277689.jpg)
Membro desde: 06/01/2011 10:07:55
Mensagens: 219
Offline
|
Talvez este post te ajude.
|
Dépasser - Escola de Tecnologia
www.depasser.com.br
https://twitter.com/#!/visola
http://br.linkedin.com/pub/vinicius-isola/5/957/26b |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 16:14:45
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
visola
Obrigado pela dica, mas não ajudou não....
Eu imagino que deva ter algum comando mais simples que eu consiga chamar para mandar imprimir o conteúdo do meu JFrame ou JPanel, algo como
panel.print()...... algo assim
Se alguém souber, por gentileza, estou precisando muito saber.
Grande abraço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 16:46:35
|
Shelson
JavaEvangelist
![[Avatar]](/images/avatar/f3173935ed8ac4bf073c1bcd63171f8a.jpg)
Membro desde: 28/08/2003 16:52:00
Mensagens: 452
Offline
|
Robertdm wrote:
visola
Obrigado pela dica, mas não ajudou não....
Eu imagino que deva ter algum comando mais simples que eu consiga chamar para mandar imprimir o conteúdo do meu JFrame ou JPanel, algo como
panel.print()...... algo assim
Se alguém souber, por gentileza, estou precisando muito saber.
Grande abraço.
infelizmente não existe isso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 16:53:11
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Shelson
Não? Puxa vida......bom, mas deve existir uma forma de imprimir o conteúdo de um JFrame ou de um JPanel certo?
Pesquisei muito na net e minha única esperança é que alguém aqui do fórum(que conhece muito mais do que eu) deva saber como fazer...
Estou precisando muito pessoal, muito mesmo....
Grande abraços a todos que tentaram ajudar e por favor, se alguém souber me ajude.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 17:33:10
|
Eric Yuzo
GUJ Ranger
![[Avatar]](/images/avatar/eb2af3c11079cf65589c05c5240a1541.png)
Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline
|
Sobre impressão: http://download.oracle.com/javase/tutorial/2d/printing/index.html
Impressão de GUI: http://download.oracle.com/javase/tutorial/2d/printing/gui.html
|
O importante mesmo é ser feliz!
DevSV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 18:00:04
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Eric Yuzo
Muito obrigado pelas dicas, mas eu já tinha lido este material, porém não entendi como fazer na prática entende? Sou novato com java swing.
Poderia me explicar onde colocaria o código na minha classe e como faria?
Agradeço muito a ajuda, grande abraço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 18:00:14
|
Lindberg
JavaEvangelist
![[Avatar]](/images/avatar/a18aa23ee676d7f5ffb34cf16df3e08c.jpg)
Membro desde: 02/05/2006 19:23:53
Mensagens: 363
Offline
|
olha esse link: http://www.guj.com.br/java/231315-como-capturar-a-tela-do-programa-com-o-bufferedimage-
é uma captura de imagem da tela, salva e imprime ...
não sei se resolve.
|
Aqui... A turma é D+++. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 19:04:14
|
Eric Yuzo
GUJ Ranger
![[Avatar]](/images/avatar/eb2af3c11079cf65589c05c5240a1541.png)
Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline
|
Depois de gastar um tempinho tentando entender o assunto, vou tentar passar o resultado.
Robertdm wrote:Poderia me explicar onde colocaria o código na minha classe e como faria?
Não sei se chegou a ler tudo, mas para conseguir entender bem o assunto é interessante ler, principalmente, os primeiros tópicos, que passam o básico sobre a impressão.
De qualquer forma, vou postar o mesmo código que está na classe PrintUIWindow e colocar alguns comentários. Vou comentar por cima os pontos que considero importantes para o entendimento da classe.
PS.: Os comentários em inglês são os originais. Não achei necessário modificá-los.
Resumindo, esta classe basicamente implementa Printable para que possa ser usada pelo PrinterJob, recebe o JFrame que vai ser impresso e implementa ActionListener para exibir o diálogo de impressão e mandar imprimir.
Esta classe já faz o que você precisa em relação a impressão. No seu frame basta adicioná-la como um ActionListener no botão.
Qualquer coisa, torne a postar.
|
O importante mesmo é ser feliz!
DevSV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/01/2011 11:50:39
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Lindberg
Obrigado pela dica cara.
Grande abraço.
Eric Yuzo
Primeiramente queria agradecer a ajuda e esclarecer que li todo material, na verdade mais de uma vez, mas não compreendia os detalhes, pois tinha tentado usar a classe que me passou mas não tinha conseguido....estou iniciando em java, então muitas coisas não compreendo.
Bom, eu coloquei na minha aplicação e funcionou, ou seja, eu passo o JFrame pra e ele imprime. Na verdade não testei na impressora pq não tenho, tentei gerar um pdf como sempre faço quando quero levar algum documento pra imprimir....O que aconteceu é que eu tinha 5 tabelas de conteúdo e ele imprimiu apenas duas e meia e cortou tb o lado direito, ou seja, não pegou o tamanho todo do JFrame. Estou enviando em anexo o pdf gerado.
Existe algum detalhe para ele imprimir todo conteúdo do JFrame?
Outra coisa, vc colocou nos comentários que poderia imprimir outros componentes, ou seja, eu tentei então imprimir o JPanel e para isso alterei a declaração do JFram na classe e tentei passar ele no construtor mas deu erro, ele não aceita. Precisa mudar alguma coisa na lógica para poder passar um JPanel pra ele imprimir? Pergunto, pois pensei em tentar imprimir o JPanel pra ver se o conteúdo sai direitinho.
Agradeço muito a atenção e a ajuda e fico no aguardo
Grande abraço.
| Nome do arquivo |
Java Printing.pdf |
Download
|
| Descrição |
Resultado da impressão do JFrame |
| Tamanho |
33 Kbytes
|
| Baixado: |
68 vez(es) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/01/2011 12:24:36
|
Eric Yuzo
GUJ Ranger
![[Avatar]](/images/avatar/eb2af3c11079cf65589c05c5240a1541.png)
Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline
|
Robertdm wrote:Bom, eu coloquei na minha aplicação e funcionou, ou seja, eu passo o JFrame pra e ele imprime. Na verdade não testei na impressora pq não tenho, tentei gerar um pdf como sempre faço quando quero levar algum documento pra imprimir....O que aconteceu é que eu tinha 5 tabelas de conteúdo e ele imprimiu apenas duas e meia e cortou tb o lado direito, ou seja, não pegou o tamanho todo do JFrame. Estou enviando em anexo o pdf gerado.
Existe algum detalhe para ele imprimir todo conteúdo do JFrame?
Aparentemente o problema é que a folha acabou mesmo, quer dizer, a largura do JFrame está maior que a largura da folha.
Robertdm wrote:Outra coisa, vc colocou nos comentários que poderia imprimir outros componentes, ou seja, eu tentei então imprimir o JPanel e para isso alterei a declaração do JFram na classe e tentei passar ele no construtor mas deu erro, ele não aceita. Precisa mudar alguma coisa na lógica para poder passar um JPanel pra ele imprimir? Pergunto, pois pensei em tentar imprimir o JPanel pra ver se o conteúdo sai direitinho.
Esta parte eu acabei deduzindo, já que o método vem da Classe Component. Apesar que o próprio artigo do Java Tutorials cita isso.
Estou meio ocupado agora. Mas da metade para o fim da tarde vou fazer uns testes e analisar melhor como isso funciona, aí eu retorno.
E se conseguir solucionar o problema, não deixe de postar.
Falou...
|
O importante mesmo é ser feliz!
DevSV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/01/2011 13:32:37
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Eric Yuzo
Agradeço por tudo...
Bom, corrigindo o que eu havia dito antes, eu consegui passar o JPanel para imprimir, estava comento um erro no código, mas mesmo assim, ele imprime cortando o tamanho e a largura exatamente o que ocorre quando passo o JFrame.
Vou continuar tentando e caso consiga eu posto aqui sim.
Fico no aguardo caso tenha alguma novidade quando vc puder mexer.
Grande abraço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/01/2011 00:36:02
|
Eric Yuzo
GUJ Ranger
![[Avatar]](/images/avatar/eb2af3c11079cf65589c05c5240a1541.png)
Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline
|
Achei mais dois artigos sobre impressão bem interessantes:
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/render.html
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/advprint.html
Tomei como base o segundo link (Advanced Printing) e adaptei o esquema que eles usaram para redimensionar a JTable, só que aplicando ao componente, caso ele seja maior que a folha. O problema é que se a tela for muito grande, após o redimensionamento vai ficar ruim de ler o conteúdo. Uma forma de contornar isso é pedir para imprimir em landscape (paisagem).
Eu aproveitei também para usar a referência de um Component para ser impresso, permitindo que passe um JFrame, JPanel ou qualquer outro Component pelo construtor. E criei uma cópia do Graphics ao invés de utilizá-lo diretamente.
Ficou assim:
Agora é questão de ir adaptando conforme as necessidades.
Só para lembrar, se for imprimir um JTable ou um JTextComponent, não precisa utilizar esta classe, basta chamar o método print(), que já foi implementado para este fim.
Falou...
|
O importante mesmo é ser feliz!
DevSV |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/01/2011 09:40:26
|
Robertdm
JavaBaby
![[Avatar]](/images/avatar/e7b3c1720059e7746abbc6c1fac47bea.jpg)
Membro desde: 15/10/2010 16:01:54
Mensagens: 84
Offline
|
Eric Yuzo
Bom dia cara, primeiramente quero te agradecer por estar dedicando um grande tempo pra me ajudar, muito obrigado mesmo e desculpa pelo incômodo.
Bom, com relação ao que me passou, eu testei aqui e agora ele imprime a largura direitinho, ou seja, ele imprime a largura da janela que eu deixar, muito bom. Mas a altura aqui ele corta, não sei exatamente o que ele faz, mas percebi que ele imprime apenas a altura que é mostrado na tela, ou seja, caso eu role a página um pouco mais pra baixo e mando imprimir, ele imprime o que estou vendo. Parece que ele tira um print da janela e manda imprimir....
Não sei se quando vc testou ocorria o mesmo e gostaria de saber se sabes o pq isso acontece, ou seja, preciso alterar alguma coisa na classe pra ele pegar o conteúdo inteiro do JFram e não apenas o que é visto? Confesso que não entendi muitas partes da classe, e realmente não sei onde poderia alterar. Até te peço desculpas, pois vc mesmo disse que agopra era só ir adaptando, eu tentei mexer em alguns lugares na classe e testei mas nada....
Muito obrigado
Grande abraço....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/01/2011 10:00:15
|
super_swinger
Debugger
Membro desde: 12/01/2011 17:28:13
Mensagens: 54
Offline
|
é complicado para imprimir..., e nao deveria ser mas de uma olhadinha aqui: http://javafree.uol.com.br/topic-865229-Ajuda-a-imprimir-em-java.html
|
Core i7 980x 3,3 GHz
P6T Deluxe V2
2x GTX 580
16 GB DDR3 1600Mgz(4x4Gb)
2x HD 2TB
Monitor LED 24'
Fonte 1200W Real |
|
|
 |
|
|