Как изменить значок JLabel?

У меня есть jlabel, чтобы показать сгенерированное изображение. Но он работает только в первый раз. После этого imageicon jlabel не изменяется. В чем может быть проблема?

Ответ 1

Скорее всего, у вас есть два экземпляра JLabel. Первая - это переменная класса, а одна - переменная экземпляра, которая была добавлена ​​в графический интерфейс. Проблема заключается в том, что ваш код обновляет переменную класса.

Или, может быть, если вы не обновите значок на EDT, у вас могут быть проблемы.

Изменить: просто перечитайте вопрос. Если вы говорите о "сгенерированном изображении", который необходимо перезагрузить из файла, вам нужно избавиться от кэшированного изображения. Два способа сделать это:

//  Using ImageIO

String imageName = "timeLabel.jpg";
imageLabel.setIcon( new ImageIcon(ImageIO.read( new File(imageName) ) ) );

//  Or you can flush the image

String imageName = "timeLabel.jpg";
ImageIcon icon = new ImageIcon(imageName);
icon.getImage().flush();
imageLabel.setIcon( icon );

Если вам нужна дополнительная помощь, напишите SSCCE.

Ответ 2

Я второй ответ, что есть вероятность, что у вас есть два отдельных объекта метки.

Другая возможность заключается в том, что у вас есть два объекта значков, которые ссылаются на одно и то же изображение, поэтому установка его на ярлыке не влияет.

Ответ 3

если у вас есть определение jlabel JLabel label = new JLabel();

Я имею в виду ярлык, который вы использовали для отображения изображения

внутри функции события, избавиться от него