JPanel como imagem [Resolvido]  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Pessoal, gostaria de saber se é possivel eu "exportar" um JPanel como imagem, isso pode parecer meio doido, mas eu tenho um JPanel com um monte de coisas dentro dele e queria salvar uma imagem desse meu JPanel, não é bem um exportar...ficou estranho, é como dar um "Print Screen" do JPanel, é possível fazer essa loucura?

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LucasPoli
What is classpath?
[Avatar]

Membro desde: 17/12/2006 12:52:11
Mensagens: 6
Localização: http://br.geocities.com/comunidadeclipper/
Offline

Não entendi.

Por que exatamente você não pode usar o PrintScreen ?

"Come to the bright side of the Force.
Use Java !"

_____________________________________
Luke Skywalker
[WWW]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

Ve se é isso resolve seu problema...

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
Rectangle screenRect = new Rectangle(screenSize);

try{
robot = new Robot();
}catch(Exception e){
System.out.println("ERRO _ ROBOT");
}
BufferedImage imgcapturada = (BufferedImage)robot.createScreenCapture(screenRect);

-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

SkyWalker, eu gostaria que a minha ferramenta fizesse isso, e não eu

LuizLG, eu fiz o seguinte, peguei esse código que vc me mandou e criei um novo JPanel passando como argumento para o método paintComponents (Graphics) o que vc me passou, entretanto, não gerou nada. Vc conseguiu fazer funcionar ae?



Obrigado pessoal

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

Sobreescreve o método Paint que dá certo.

Eita.. só que agora percebi que assim vai tirar screenshot da tela inteira..Mas talvez se vc passar a localização do jpanel e o tamanho fique certo...

Melhor: dá uma olhada na classe Robot, deve ter como tirar screenshot só do componente!

Vou dar uma olhada tb, qualquer coisa volto =pp


-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Blz Luiz, vou dar uma olhada!

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

Achei..
Fora do jPanel vc usa o getBounds pra pegar as dimensoes, depois o ScreenCapture, testa ae!

Rectangle r = jPanel.getBounds();
BufferedImage image = new Robot().createScreenCapture(r);

-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Ele ta capturando do tamanho do JPanel, contudo, a localização está errada, tentei passar um getLocation, mas naum funcionou, vou ter que pensa numa solução melhor, que não dependa de uma localização e sim do componente, será que dá?
Obrigado Luiz

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

Você tambem tem a opção de 'imprimir' em um arquivo direto, ao inves de imprimir na impressora direcionar para um arquivo de imagem. Mas agora não sei qual seu interesse, se é apenas usar no programa mesmo....

-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

A minha idéia é gerar arquivo de imagem com isso, eu tava colocando no JPanel só pra visualizar a imagem. Como posso direcionar para um arquivo de imagem esse BufferedImage (sem querer abusar da sua paciência). Vou procurar...
Obrigado Luiz


Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

http://forum.java.sun.com/thread.jspa?threadID=477654&messageID=2220990


-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Valeu Luiz

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
LuizLG
JavaBaby
[Avatar]

Membro desde: 19/12/2006 16:09:42
Mensagens: 98
Localização: Taubaté-SP
Offline

Td funcionando perfeito? xD

-x-
LG
[MSN] [ICQ]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Não, pq esse metodo write recebe como argumento um RenderedImage e não um bufferedImage, mas eu vou pesquisar sobre como faz isso, e quanto ao print screen, ainda ta com aquele problema, mas agora acho que é só pensar um pouco, vou dar uma pesquisada, o mais difícil já foi. Posso postar aki quando conseguir,
Valeus

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Tudo bem se for chamar o paint para pintar um BufferedImage, como no tópico.

Mas sempre que for sobrescrever no Swing, sobrescreva paintComponent().

O método paint é dividido em três partes:
1. paintBorder();
2. paintComponent();
3. paintChildren().

Sobrescreve-lo pode fazer com que o Java pule uma dessas etapas, gerando um painel de comportamento estranho.
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team