2009-10-14 5 views
11

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

+2

Это невозможно знать, не видя код, где у вас есть проблемы – OscarRyz

ответ

22

Вероятно, у вас есть два экземпляра 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.

+0

, что если я хочу обновить изображение из базы данных с помощью типа blob – Gaurav

2

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

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

-1

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

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

внутри функции событий, получить его из него

Смежные вопросы