Bom dia gujeiros! Já estive olhando pelos foruns do guj, mas apesar das dicas, ainda sim não conegui fazer a atualização de imagem de meu JPanel. Devido a isso, estou apelando a ajuda de vocês! Bom, é o seguinte: tenho dois JPanel, um como se fosse a moldura para receber a imagem e o outro a propria imagem. Com as dicas dos amigos do guj eu consegui retirar a imagem do JPanel moldura, mas não consigo adicionar uma nova imagem. Será que podem me dar uma dica de onde estou errando? Abaixo segue o código!
Classe onde retorna um JPanel com a imagem.
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class ImagemJPanel extends JPanel{
//BufferedImage imagem1;
Image imagem = null;
public ImagemJPanel(String diretorio){
try{
//imagem1 = ImageIO.read(new File("C:/Users/auxiliar/Desktop/imagens/ciencia.jpg"));
imagem = Toolkit.getDefaultToolkit().getImage(diretorio);
}
catch(Exception e){
JOptionPane.showMessageDialog(ImagemJPanel.this, "Ocorreu um erro durante o carregamento da fot","ERRO",JOptionPane.WARNING_MESSAGE);
}
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
if (imagem != null){
g.drawImage(imagem, 05, 10, (this.getWidth()-10), (this.getHeight()-12), this);
}
else{
g.drawString("Sem Foto!", 30, 80);
}
}
}
Ouvinte do botão, onde é feito a troca de imagem no JPanel
botaoVisualizar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(campoPath.getText().equals("")){
JOptionPane.showMessageDialog(null, "O campo Foto deve ser preenchido!","ATENÇÃO!", JOptionPane.WARNING_MESSAGE );
}
else{
System.out.println(campoPath.getText());
painelFotoCientista.remove(fotoCientista);
repaint();
invalidate();
fotoCientista = new ImagemJPanel(campoPath.getText());
painelFotoCientista.add(fotoCientista);
invalidate();
repaint();
}
}
});