Я использую таймер для изменения значка в JLabel каждую секунду. I инициализируется и начал таймер в конструкторе GUI:Timer Object wint aimate images
images[0] =new ImageIcon(getClass().getResource("connected.png"));
images[1] =new ImageIcon(getClass().getResource("notConnected.png"));
imageAnimator = new Timer(1000, animateImages());
imageAnimator.start();
И завернутые метод вызовов таймера в виде SwingWorker нити:
private ActionListener animateImages() {
System.out.println("in animateIMages method");
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>(){
protected Void doInBackground() throws Exception {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
System.out.println("In swingworker ");
if (currentImage==0) {
currentImage=1;
connectionStatusLabel.setIcon(images[currentImage]);
System.out.println("in if currentImage==0: currentIMage should now be 1: "+ currentImage);
}
else {
currentImage=0;
connectionStatusLabel.setIcon(images[currentImage]);
System.out.println("in if else: currentIMage should now be 0: "+ currentImage);
}//end else
return null;
}
};//end worker thread
Однако изображение меняется только один раз, когда первый, если заявление казнены. Заранее спасибо
Спасибо. Удален рабочий поток Swing, но тот же результат. Кажется, метод ActionListener вызывается только таймером, а не каждую секунду .... – dancingbush