Problem with Swing Timer: timer-updated GUI occasionally stops
updating
I have developed a Swing client that is comprised of 8 different
screens. The data on all the screens is updated by the server via RMI
2-3 times a second. The update is performed using java.swing.Timer.
Each screen has it's own Timer object. This all works fine most of the
time, but once in a while data updates stop and then resume anywhere
from 5 to 20 minutes later. The GUI itself remains responsive when the
updates stop. It happens so sporadically that I have not been able to
reproduce this problem.
All of my screen subclass following class:
public abstract class UpdatableFrame extends JFrame implements
ActionListener
{
protected Timer timer;
protected int refreshRate = 1000;
public void actionPerformed(ActionEvent e)
{
try
{
update();
}
catch (Exception e1)
{
Util.error("Error on timer.update";, e1);
}
}
public void setVisible(boolean visible)
{
init();
if (visible && !timer.isRunning())
{
timer.start();
update();
}
else
timer.stop();
super.setVisible(visible);
}
protected void rootWindowClosed(WindowEvent evt)
{
timer.stop();
}
protected void init()
{
if (timer == null)
{
timer = new Timer(refreshRate, this);
timer.setInitialDelay(10000);
}
}
}
Can anyone please shed some light on this murky situation.
Thank you