Pessoal, estou com um problema numa aplicação Java que estou desenvolvendo, vou tentar explicar simplificadamente:
1 - No meu código, desenvolvi um cadastro de pessoas que inclui uma imagem da pessoa que está sendo cadastrada. Estou utilizando um JFileChooser que permite escolher o arquivo de imagem, posteriormente setada no icone de um JLabel da aplicação. Essa mesma imagem é também gravada numa pasta do projeto, através do uso do ImageIO.write.
2 - Também foi implementado no código uma forma de atualizar o cadastro da pessoa, escolhendo uma nova imagem para seu perfil. Novamente utilizo o ImageIO.write que grava a nova imagem escolhida no JFileChooser na mesma origem da pasta do projeto, substituindo a imagem antiga.
3 - O problema é que, quando faço uma consulta do cadastro da pessoa que acabei de atualizar, a imagem que se encontra associada é a antiga e não a atualizada. O que é estranho, pois se formos olhar na pasta do projeto a imagem antiga nem existe mais, pois foi substituída pela atualizada.
Não tenho como postar aqui todo o código pois ele é muito extenso, mas deixo um exemplo de como estou escolhendo a imagem no JFileChooser e gravando ela na pasta:
public void escolherImagem() {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showSaveDialog(null);
String caminhoProject = System.getProperty("user.dir");
File caminhoImagem = new File(caminhoProject+"/images/ImagemUser(x).jpg");
try {
if(option == JFileChooser.APPROVE_OPTION) {
//Pega o caminho da imagem selecionada no JfileChooser;
File caminhoFile = fileChooser.getSelectedFile();
//Cria um ImageIcon com o caminho da imagem selecionada e seta ele no ícone de um jlabel de uma tela qualquer;
ImageIcon imageIcon = new ImageIcon(caminhoFile.getAbsolutePath());
this.tCadastroPessoa.getjLabelImagemPessoa().setIcon(imageIcon);
//Carrega um bufferedImage com o ícone do JLabel;
bufferedImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(((ImageIcon) this.tCadastroPessoa.getjLabelImagemPessoa().getIcon()).getImage(), 0, 0, null);
//Grava a imagem do buffbufferedImage, com a extensão "jpg", no caminho especificado;
ImageIO.write(bufferedImage, "jpg", caminhoImagem);
}
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Erro no carregamento da imagem.");
}
}
Quando eu fecho a aplicação e a compilo novamente, ao realizar a mesma consulta do cadastro atualizado a imagem, desta vez, vem corretamente atualizada. Isto me faz pensar que seja algum problema relacionado à limpeza do buffer, mas não tenho certeza e nem sei como limpa-lo.
Se alguém souber como ajudar, agradeço