[RESOLVIDO] Ajudem! JLabel não atualiza!

Olá, estou fazendo uma interface gráfica para uma impressora. Como esta impressora só imprime em preto e branco, tenho uma classe que se responsabiliza por transformar uma imagem qualquer em uma imagem em preto e branco. Na interface, ao escolher uma imagem com um JFileChooser e pressionar um botão, um JLabel deve mostrar a imagem original e outro a imagem transformada. Na primeira vez que executo estas ações, tudo funciona perfeitamente. Após a primeira vez, quando executo o mesmo procedimento, porém com outra imagem, apenas a imagem no JLabel colorido muda, e a imagem no outro permanece a mesma. Alguém tem alguma idéia do que possa ser?

Poste o trecho onde você abre o FileChooser e substitua as imagens.

Você também pode tentar chamar repaint(), mas isso não deveria ser necessário.

Aqui abro o jFileChoose e coloco o caminho do arquivo escolhido em um campo de texto. Isso funciona bem.

public class ButtonEventListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {

            if(e.getSource()==fileSelectionButton){
                int returnVal = fileChooser.showOpenDialog(PlotterMainFrame.this);
               if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                imagePathEntry.setText(file.getAbsolutePath());
               }
            }

Aqui pego o path do campo de texto e binarizo a imagem apontada por este path. Depois tento mudar o ícone dos labels imagePreview1 e imagePreview2 para a imagem original e binarizada respectivamente. Na primeira vez funciona bem, mas se eu quiser repetir o procedimento com outra imagem, apenas o imagePreview1 é atualizado normalmente, enquanto o outro label continua com a mesma imagem.

else if(e.getSource()==buildFileButton){
                myImageTools imageTools = new myImageTools();
                try {
                    System.out.println("path: "+imagePathEntry.getText()+tresholdSlider.getValue());

                    imageTools.binarizeImg(imagePathEntry.getText(), "temporaryImageFile", "png",tresholdSlider.getValue());
                                       
                    
                    preview1 = new ImageIcon(imagePathEntry.getText());
                    imagePreview1.setIcon(preview1);


                    preview2 = new ImageIcon("temporaryImageFile");
                    imagePreview2.setIcon(preview2);
                    
                    JOptionPane.showMessageDialog(null,"File built sucessfully!");

                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null,"An error occured...);
                    //JOptionPane.showMessageDialog(null,ex.getMessage());
                }
            }

Tire fora as linhas 09 e 13 do códigos postado, e mova-as para um construtor (ou para o método initialize).

O que acontece aí é que você está criando um ImageIcon diferente para cada imagem carregada.
Como não é esse novo imageIcon que está sendo exibido na tela, nada será exibido.

Agora funcionou. Os dois JLabels estavam sendo atualizados, mas mesmo assim, após algum número aleatório de repetições do procedimento, o mesmo JLabel parava de atualizar seu ícone. Então coloquei um repaint() para cada JLabel e tudo se resolveu. O código agora está assim:

else if(e.getSource()==buildFileButton){
                myImageTools imageTools = new myImageTools();
                try {
                    System.out.println("path: "+imagePathEntry.getText()+tresholdSlider.getValue());

                    imageTools.binarizeImg(imagePathEntry.getText(), "temporaryImageFile", "png",tresholdSlider.getValue());

                    preview1.setImage(ImageIO.read(new File(imagePathEntry.getText())));
                    imagePreview1.setIcon(preview1);
                    imagePreview1.repaint();

                    preview2.setImage(ImageIO.read(new File("temporaryImageFile.png")));
                    imagePreview2.setIcon(preview2);
                    imagePreview2.repaint();
                    
                    JOptionPane.showMessageDialog(null,"File built sucessfully!");

                } catch (Exception ex) {
                   JOptionPane.showMessageDialog(null,ex.getMessage());
                }
            }

Obrigado pela ajuda e rapidez em responder ao tópico.