Re: How to change JPanels?
On 02/16/2011 11:42 AM, Eric wrote:
On Feb 16, 9:26 am, Lew<no...@lewscanon.com> wrote:
To summarize. There is one EDT. Swing handles that threading automatically.
You have to give it GUI commands to handle, otherwise they simply cannot run
on the EDT. You are the programmer. You put the calls on the EDT, using
'invokeLater()' and its sister. The EDT is a single thread and there's only
one of it. If you run slow things on the EDT, you will have a slow GUI. That
is bad. Run slow things off the GUI. Run GUI things on the GUI. It's up to
you do to that.
--
Lew
Don't quote sigs.
From the Oracle docs:
public static boolean isEventDispatchThread()
Returns true if the current thread is an AWT event dispatching thread.
<http://download.oracle.com/javase/6/docs/api/java/awt/EventQueue.html#isDispatchThread%28%29>:
"Returns true if the calling thread is the current AWT EventQueue's
dispatch thread."
This is where you're confusing. You're saying there's one EDT.
Oracle says there's more. It does not say *the* EDT, it says *an*
EDT.
I see that the method here clearly states *the*, not *an*. Actually, if
I recall some of the really, really dirty implementation details, it is
actually possible to have multiple event dispatch threads, but only at
most one will exist at any point in time (consider, e.g., what happens
when you throw an uncaught exception on the EDT). It is also possible
that having multiple applets in one page can cause things to get really
wonky.
--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth