Re: How to change JPanels?
Eric wrote:
Than I'm confused. Are you unable to run the sample here? What IDE
Red herring. You did it wrong whether he tries to run your program or not.
are you using? Did I install the magic version of Eclipse?
No, you simply failed to initialize or run your GUI objects on the EDT. This
is in the reading material to which you were directed.
I don't have any error messages in my IDE on this class. I can run it
But yet you did it wrong.
and I see the window, no errors visible there either.
But yet you did it wrong.
Can I attach a screenshot here somewhere? I'll gladly show you my
magic window.
Screenshots are irrelevant. We've seen the code. You did it wrong.
Here's the $64,000 question: Did you actually read the tutorial material
linked for you?
Did you?
If I understand what you're trying to say, the test program here is
fine if I move the code from the main method to another method, and if
Nope.
this object is called from another object, and if the starting point
to that program calls something through a SwingWorker or
SwingUtilities before any gui [sic] commands.
Nope.
I believe in this thread someone said gui [sic] code must be run in a
ON THE EDT!
different thread than time consuiming non-gui [sic] code, but in asking
whether the gui code should be the main thread and start a new thread
for the other code or if it could be the other way around, maybe I
read something wrong but the answer I got is yes either way is fine.
No, that is neither the correct advice nor what people have told you here.
From what I've read in the Oracle docs, the "initial thread" should
not run gui [sic] commands because they need to run on EDT but it doesn't
have a clear explanation of what the EDT is. If I create a JFrame it
Tell us what part of
http://download.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html
is not clear and we'll help.
must be running on an EDT. If it's [sic] menu action listener needs to run
Only if you take care to be sure that it does, unlike what you did in your code.
some time consuming code it creates a SwingWorker, so that would start
No, *you* create the SwingWorker. You're the programmer.
a new thread which would presumably not be an EDT, but it has a done
Not "presumably", actually and by documented design and purpose, as you would
know had you read the docs.
method to update the gui [sic] which is either creating another new thread
which is an EDT or is somehow linked to the thread which created the
You really have not read the material. There is only *one* EDT!
Are you familiar with a little web site called "Google"?
SwingWorker. The only definitive answer I can see in there is to
execute the javax.swing.SwingUtilities.isEventDispatchThread method in
every section of code which appears to be a separate thread and see
which one(s) is an EDT or the EDT. Maybe I'm missing it but it
Nonsense. READ THE MATERIAL!
doesn't explain why the first thread can't be the EDT if all sole
purpose of it is to create a window and any other time consuming code
is kicked off in new threads.
Had you read the referenced material? It explains all that, so I guess you
have not.
--
Lew
Honi soit qui mal y pense.