Re: Outside of the EDT: JOptionPane.showMessageDialog
"John B. Matthews" <nospam@nospam.invalid> writes:
I can see this as an introductory example with the footnote,
"The example is incorrect, as we'll learn in chapter _n_."
In my own teachings, I now use Swing outside of the EDT first
in a simple example, where I believe that nothing bad is going
to happen:
public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( javax.swing.Timer.getLogTimers() );
javax.swing.Timer.setLogTimers( true );
java.lang.System.out.println( javax.swing.Timer.getLogTimers() );
javax.swing.Timer.setLogTimers( false );
java.lang.System.out.println( javax.swing.Timer.getLogTimers() ); }}
I want to show, how state can have an effect on the results
of method invocations, but at this time only want to use
static methods. There is not so much choice for predefined
static methods of this kind in Java, since I also have other
constraints (I do not have even introduced variables at this
point), so I chose the above methods (another method of this
kind being System.getProperty).
The next example uses the
technique you give above, .------------------.
i.e., I create a JFrame | This might look |
outside of the EDT and | wrong, but it is |
explain that this is wrong, | supposed to be |
but more simple for the | a German word! |
moment, and the correct way '------------------'
will be shown later. |
'-------------.
public class Main |
{ public static void main( final java.lang.String[] args ) v
{ final javax.swing.JFrame frame = new javax.swing.JFrame( "Hallo Swing!" );
frame.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE );
frame.setVisible( true ); }}
It hurts somewhat to see this, but this example appears
just after the introduction of ?new?, and makes the effect
of ?new? visible somehow, so I thought it might be a good
motivation. In a sense, a JFrame is a ?visible object?, so
this example visualizes objects, which might help to learn.
But I have not yet introduced interface implementations, and
so I cannot yet implement java.lang.Runnable.