Salve galera
Seguinte, estou usando o componente JXImagePanel do SwingX para exibir uma imagem…Funciona blzinha, mas nao sei pq ele mantem a ultima imagem quando eu a troco. Eu preciso fechar o JFrame para ele exibir a nova imagem q troquei, parece q mantem em cache algo assim.
aqui como estou fazendo
public class AlteraCadastroDeProduto extends JDialog{
private File imageFile;
public AlteraCadastroDeProduto(){
abreImagemCodBarraProduto();
}
}
public void imagemDefault(){
ImageIcon imagem = new ImageIcon(getClass().getResource("/imagens/no_image.gif"));
imagePanel.setImage(imagem.getImage());
imagePanel.setStyle(Style.SCALED);
}
public void abreImagemCodBarraProduto(){
//abre a imagem do produto referente ao codigo de barra
ImageIcon imagem = new ImageIcon("/IguanaSistemas/IguanaMarket/imagens/" + codBarra.getText().trim() + ".png");
imagePanel.setImage(imagem.getImage());
imagePanel.setStyle(Style.SCALED);
}
public void trocaImagemDoProduto(){
JFileChooser arquivo = new JFileChooser();
arquivo.setDialogTitle("Selecione a Imagem");
arquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & PNG Images", new String[]{"jpg","png"});
arquivo.setFileFilter(filter);
arquivo.setAcceptAllFileFilterUsed(false);
arquivo.setMultiSelectionEnabled(false);
imageFile = new File("user.dir");
int option = arquivo.showOpenDialog(this);
if(option == JFileChooser.APPROVE_OPTION) {
imageFile = arquivo.getSelectedFile();
if(imageFile.getName().endsWith(".jpg") || imageFile.getName().endsWith(".png")){
ImageIcon imagem = new ImageIcon(imageFile.getPath());
imagePanel.setImage(imagem.getImage());
imagePanel.setStyle(Style.SCALED);
}else{
JOptionPane.showMessageDialog(null, "Arquivo não suportado", "Erro", JOptionPane.ERROR_MESSAGE);
imagemDefault();
}
}
}
public void salvaImagem(){
try {
if(imageFile != null){
BufferedImage imagem = ImageIO.read(imageFile);
ImageIO.write(imagem, "PNG", new File("/IguanaSistemas/IguanaMarket/imagens/" + codBarra.getText().trim() + ".png"));
}else{
BufferedImage imagem = ImageIO.read(getClass().getResource("/imagens/no_image.gif"));
ImageIO.write(imagem, "PNG", new File("/IguanaSistemas/IguanaMarket/imagens/" + codBarra.getText().trim() + ".png"));
}
} catch (IOException ex) {
Logger.getLogger(AlteraCadastroDeProduto.class.getName()).log(Level.SEVERE, null, ex);
}finally{
imageFile = null;
}
}
//aqui onde salvo
public void alteraProduto(){
salvaImagem();
produto.update(produto);
}
Nao sei pq acontece isso, parece q a imagem fica em um cache sei la, e soh muda quando abro e fecho o sistema…
Alguma dica ?
obrigado