Monday 27 November 2017

java - SwingUtilities.invokeLater

itemprop="text">

My question is related to
SwingUtilities.invokeLater. When should I use it? Do I have to
use each time I need to update the GUI components? What does it exactly do? Is there an
alternative to it since it doesn't sound intuitive and adds seemingly unnecessary
code?



Answer







Do I have to use each time I need to update the GUI
components?




No,
not if you're already on the event dispatch thread (EDT) which is always the case when
responding to user initiated events such as clicks and selections. (The
actionPerformed methods etc, are always called by the
EDT.)



If you're not on the
EDT however and want to do GUI updates (if you want to update the GUI from some timer
thread, or from some network thread etc), you'll have to schedule
the update to be performed by the EDT. That's what this method is
for.



Swing is basically thread unsafe. I.e., all
interaction with that API needs to be performed on a single thread (the EDT). If you
need to do GUI updates from another thread (timer thread, networking thread, ...) you
need to use methods such as the one you mentioned (SwingUtilities.invokeLater,
SwingUtilities.invokeAndWait, ...).


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...