Jpanel x Jlabel para carregar imagens de um Banco de Dados [Aguardando Confirmação p/ Resp.]
15 respostas
E
esrolfi
Boa noite Pessoal, so novo aki no forum e novo tbm em app. c/ Swing + NetBeans …
To fazenu um cadastro q carrega várias imagens de um Banco de Dados porém vi na net q tem N jeito , os + comuns são
através do repaint() do JPanel inserindo um ImageIcon nele e o JLabel.setIcon .
Alguém por favor sabe me dizer o PQ e QUAL dos 2 é mais eficaz PARA APENAS CARREGAR AS IMAGENS + rápido.
eu fiz um componente que herda de JLabel e tem algumas operações que facilitam a manutenção da foto quando gravada como tipo bytea no banco. Se o seu caso for esse posso te passar o componente… se for só carregar a imagem sem precisar salvar ela no banco use o JLabel mesmo…
E
esrolfi
Boa noite Erico_KL , se puder passar agradeço cara , sobre a minha dúvida sobre qual era a mais rápida eu num achei tbm a resposta , PORÉM achei meia resposta , q é add. num JLabel pelo menos pra implementar é mais rápido do que fazendo draw com JPanel´s …
No caso do JLabel eu fiz assim , sera q no draw seria melhor ? ou + rápido ?
cara… coloca as tags {code} e {/code} antes e depois do teu código, respecitvamente (troque as chaves por colchetes)… fica melhor para ler
E
esrolfi
Vlw eu tava querenu saber isso tbm…qdo c puder deixa o codigo q c falow por gentileza !
Abs !
erico_kl
Segue aí 2 classes que eu criei que contém métodos pra manutenção de imagens. Uma delas é o componente que estende de JLabel e a outra é uma classe com vários métodos que auxiliam no tratamento de imagens, tais como conversões para byte[], redimensionamento da imagem, exportação em GIF, JPEG, PNG e BMP etc…
Claro… estas classes estão implementadas de acordo com as minhas necessidades. Você terá que adaptá-las.
ViniGodoy
também fiz uma classe de ImagePanel. Suporta redimensionamento, imagens lado-a-lado ou centralizada (como no caso do papel de parede do Windows): http://www.guj.com.br/posts/list/56248.java
erico, cuidado que você deve copiar o contexto gráfico antes de alterar as propriedades dele:
Graphics2D g2d = (Graphics2D) graphics.create();
//Pintura ou impressão aqui
g2d.dispose();
Principalmente pq vc altera background e outras propriedades que o java pode esperar que não estejam alteradas, em métodos futuros (já tive casos de comportamentos bizarros ao esquecer disso).
erico_kl
isso sempre antes de trabalhar com Graphics2D?
M
marcobiscaro2112
Sempre que for fazer alterações no gráfico, sim (mudar o background, o paint, rotate, e assim por diante).
E interessante, o ImagePanel estende JLabel…
erico_kl
Sempre que for fazer alterações no gráfico, sim (mudar o background, o paint, rotate, e assim por diante).
E interessante, o ImagePanel estende JLabel…
mas tem algum problema em estender JLabel?
ViniGodoy
Nenhum problema. Mas se não for usar o resto dos atributos do JLabel (como o texto dela), talvez seja melhor só estender de JComponent, que nem sequer tem essa propriedade.
erico_kl
ah… é que eu estendi JLabel por causa do set/getIcon
Oi pessoal , tbm pesquisando mais sobre o assunto vi que grande maioria ou quase todas as aplicações que usam imagens, figuras e fotos, usam o Jpanel implementando o Draw , LOGO A RESPOSTA DO TÓPICO : Jpanel x JLabel p/ carregar imagens de um Banco de Dados : JPANEL IMPLEMENTANDO O DRAW , C eu estiver errado por favor me corrigam !!!
Obrigado pelas Classes Pessoal !!!
Vlw !!!
erico_kl
acho que não existe uma regra: “Faça com JLabel” ou “Faça com JPanel”… depende de cada situação… pra mim sempre serviu o JLabel…
ViniGodoy
É porque, em muitos casos, a pessoa quer colocar componentes em cima da imagem, como no caso de um papel de parede. Como o painel é também um container, torna-se ideal utiliza-lo.
Se você for fazer um componente pura e simplesmente para exibir a imagem, sem componentes em cima, eu sobrescreveria o JComponent.
Para um painel com imagem de fundo, o JPanel.
Mas também não existe uma graaande diferença, caso você use o JLabel.