I have a thread that does display updates on my JFrame by using SwingUtilities.invokeLater. The thread’s speed is adjustable, and when it set to full speed (no sleeping between updates), my program gets slowed down badly. I guess the problem is my thread is generating too much SwingUtilities.invokeLater events that JFrame’s thread can not consume. So is there anything I can do on my thread to remove previously added but not consumed events? Or should I use some other ways to update JFrame without using SwingUtilities.invokeLater?
Thanks in advance.
This might be a perfect job for
SwingWorker. You can publish incremental updates, andSwingWorkerwill batch them to solve the performance problem:The code you want to run on the EDT, you add by implementing
process(). The list of updates is passed to you in the argument.