Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #5288

Re: Outside of the EDT: JOptionPane.showMessageDialog

From Knute Johnson <nospam@knutejohnson.com>
Newsgroups comp.lang.java.gui
Subject Re: Outside of the EDT: JOptionPane.showMessageDialog
Date 2012-12-27 09:06 -0800
Organization A noiseless patient Spider
Message-ID <kbhv7n$iij$1@dont-email.me> (permalink)
References <EDT-20121227033249@ram.dialup.fu-berlin.de> <kbgoak$ass$1@dont-email.me> <showMessageDialog-20121227071317@ram.dialup.fu-berlin.de> <nospam-D5E268.10234727122012@news.aioe.org> <EDT-20121227165216@ram.dialup.fu-berlin.de>

Show all headers | View raw


On 12/27/2012 7:53 AM, Stefan Ram wrote:
> "John B. Matthews" <nospam@nospam.invalid> writes:
>> I'd say no. If the dialog is not constructed on the EDT, then
>
>    I the meantime, I also started to see it this way. So, then
>
> public static void main( final java.lang.String args[] )
> { final java.lang.String name = JOptionPane.showInputDialog
>    ( "Hi, what's your name?" ); /* ... */ }
>
>    is no good idea in a beginner's book (I saw something like
>    this in a Java textbook from 2011).
>

I was curious to see if calling JOptionPane.showMessageDialog() would 
start the EDT and in fact it does.  Below are the AWT-EventQueue-0 
thread traces from jconsole.  I don't really know what they mean but 
they are slightly different depending on whether the call was put on the 
EDT.

I'll tell you that I always wrap any calls to JOptionPane.show... in 
EventQueue.invokeLater if I'm not already on the EDT.  I don't know that 
it matters but I can't find any documentation anywhere that says you 
don't need to do that.

I think I'm going to go look through the source again and see if I can 
find where the EDT gets started.

import javax.swing.*;

public class test6 {
     public static void main(String[] args) {
         JOptionPane.showMessageDialog(null,"test6");
     }
}


Name: AWT-EventQueue-0
State: WAITING on 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@baecb8
Total blocked: 6  Total waited: 8

Stack trace:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown 
Source)
java.awt.EventQueue.getNextEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.WaitDispatchSupport$2.run(Unknown Source)
java.awt.event.InvocationEvent.dispatch(Unknown Source)
java.awt.EventQueue.dispatchEventImpl(Unknown Source)
java.awt.EventQueue.access$200(Unknown Source)
java.awt.EventQueue$3.run(Unknown Source)
java.awt.EventQueue$3.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
java.awt.EventQueue.dispatchEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.run(Unknown Source)



import java.awt.*;
import javax.swing.*;

public class test6 {
     public static void main(String[] args) {
         EventQueue.invokeLater(new Runnable() {
             public void run() {
         JOptionPane.showMessageDialog(null,"test6");
             }
         });
     }
}


Name: AWT-EventQueue-0
State: WAITING on 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@448192
Total blocked: 3  Total waited: 8

Stack trace:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown 
Source)
java.awt.EventQueue.getNextEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.WaitDispatchSupport$2.run(Unknown Source)
java.awt.WaitDispatchSupport$4.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.awt.WaitDispatchSupport.enter(Unknown Source)
java.awt.Dialog.show(Unknown Source)
javax.swing.JOptionPane.showOptionDialog(Unknown Source)
javax.swing.JOptionPane.showMessageDialog(Unknown Source)
javax.swing.JOptionPane.showMessageDialog(Unknown Source)
javax.swing.JOptionPane.showMessageDialog(Unknown Source)
test6$1.run(test6.java:8)
java.awt.event.InvocationEvent.dispatch(Unknown Source)
java.awt.EventQueue.dispatchEventImpl(Unknown Source)
java.awt.EventQueue.access$200(Unknown Source)
java.awt.EventQueue$3.run(Unknown Source)
java.awt.EventQueue$3.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
java.awt.EventQueue.dispatchEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.run(Unknown Source)


-- 

Knute Johnson

Back to comp.lang.java.gui | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Outside of the EDT: JOptionPane.showMessageDialog Knute Johnson <nospam@knutejohnson.com> - 2012-12-26 22:03 -0800
  Re: Outside of the EDT: JOptionPane.showMessageDialog "John B. Matthews" <nospam@nospam.invalid> - 2012-12-27 10:23 -0500
    Re: Outside of the EDT: JOptionPane.showMessageDialog Knute Johnson <nospam@knutejohnson.com> - 2012-12-27 09:06 -0800
      Re: Outside of the EDT: JOptionPane.showMessageDialog "John B. Matthews" <nospam@nospam.invalid> - 2012-12-27 16:16 -0500
    Re: Outside of the EDT: JOptionPane.showMessageDialog "John B. Matthews" <nospam@nospam.invalid> - 2012-12-27 16:34 -0500
      Re: Outside of the EDT: JOptionPane.showMessageDialog "John B. Matthews" <nospam@nospam.invalid> - 2012-12-29 10:38 -0500
        Re: Outside of the EDT: JOptionPane.showMessageDialog Lew <lewbloch@gmail.com> - 2012-12-31 12:00 -0800

csiph-web