У меня есть два класса: логика и JFrame
. В кадре у меня есть JLabel
и JButton
, и я хотел бы:Change ImageIcon в JLabel с использованием таймера
Когда эта кнопка нажата, то ImageIcon
в изменениях метки после определенного времени с использованием свинга Timer
, как если он мигает. Для этого я загрузил два изображения с разной яркостью (img1b
и img1
). Я попытался сделать таймер изменением изображения дважды с разными задержками, но я не увенчался успехом. Я также поставить слушателя в кнопке и реализован actionPerformed
, как показано ниже:
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btnImg1)) {
logic.piscaImagen(img1, lblImg1);
logic.piscaImagen(img1b, lblImg1);
В логическом классе:
public void piscaImagen(ImageIcon img, JLabel lbl) {
Timer timer = new Timer(1250, null);
timer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt){
if(lbl.getIcon() != img){
lbl.setIcon(img);
}
}
});
timer.setRepeats(false);
timer.start();
}
Но когда я запускаю его ничего не меняется в logic.piscaImagen
. Какие-нибудь советы?
Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –
BTW - Я бы рекомендовал сделать это поэтапно. 1) Покажите оба изображения в двух меток в кадре. 2) Установите повторяющийся таймер во время инициализации графического интерфейса, чтобы изменить изображения на ** одиночной ** этикетке. 3) Установите повторение ложного (с большой задержкой) и проверьте его еще раз. 4) Укоротите задержку и попробуйте ее нажатием кнопки (а не при запуске). –