Aí, galera…
Consegui recuperar uma imagem gravada num campo binário do banco de dados para apresentação num jLabel…
O problema é que, quando a imagem se recupera, é apresentada em seu tamanho real, ou seja, as imagens mudam o tamanho do jLabel na área visível do formulário… Já tentei todos os métodos de redimensionamento do jLabel e até redimensionar a imagem, mas sem sucesso… Então pensei que pudesse jogar o array de bytes da imagem direto para um jPanel, como faço com o arquivo de imagem selecionado num JFileChooser…
Faço assim…
Tenho uma classe extendida de JPanel…
[code]package sigpbones;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
/**
*
-
@author lindoélio
*/
public class JImagePanel extends JPanel {
BufferedImage background = null;
public JImagePanel(BufferedImage img) {
if (img == null)
throw new NullPointerException("Sem imagem para processar!");
this.background = img;
}
public JImagePanel(File imgSrc) throws IOException {
this(ImageIO.read(imgSrc));
}
public JImagePanel(String fileName) throws IOException {
this(new File(fileName));
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g.create();
g2d.drawImage(background, 0, 0, this.getWidth(), this.getHeight(), null);
g2d.dispose();
}
}[/code]
E então implemento o ActionPerformed do botão de procurar o arquivo de imagem…
private void btnProcurarActionPerformed(java.awt.event.ActionEvent evt) {
if (fd.showOpenDialog(this) == JFileChooser.CANCEL_OPTION) return;
try{
JImagePanel quadroImagem = new JImagePanel(fd.getSelectedFile());
painelImagem.add(quadroImagem,BorderLayout.CENTER);
painelImagem.validate();
}
catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Não foi possível ler a imagem!");
}
}
E a imagem é então visualizada no painelImagem, respeitando a dimensão do JPanel…
Como eu faço para exibir o array de bytes recuperado do banco de dados para um JPanel???
Valeu!!!