У меня есть jlabel, чтобы показать сгенерированное изображение. Но он работает только в первый раз. После этого imageicon jlabel не изменяется. В чем может быть проблема?
Как изменить значок 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();
Я имею в виду ярлык, который вы использовали для отображения изображения
внутри функции события, избавиться от него