Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-swt-dev] Embedded SWT_AWT EventQueue Exceptions

Hi All,

I found that when embedding an AWT frame into an SWT Group that I get
EventQueue NullPointerExceptions.  However, if I simply wrap the SWT
Group inside a Composite, the error goes away.  I suspect that the
SWT_AWT Frame has to be a direct child of Composite and that using a
subclass of Composite doesn't work.  Has anyone experienced this
before?  Is this a bug?  Do you agree that every SWT_AWT Frame should
be inside a Composite and not one of Composite's subclasses?  Thanks
and details below

 -Bob

Here is the snippet used for the Group case:

    awtBridgeGroup = new Group (parentGroup, SWT.EMBEDDED);
    awtBridgeGroup.setLayout (new GridLayout ());
    awtBridgeGroup.setLayoutData (new GridData (GridData.FILL_BOTH));
    awtBridgeGroup.setText ("Awt Bridge");
    awtBridgeGroup.setSize (300, 300);

    awtTopFrame = SWT_AWT.new_Frame (awtBridgeGroup);


and for the Composite wrapper case:

   awtBridgeGroup = new Group (parentGroup, SWT.EMBEDDED);
    awtBridgeGroup.setLayout (new GridLayout ());
    awtBridgeGroup.setLayoutData (new GridData (GridData.FILL_BOTH));
    awtBridgeGroup.setText ("Awt Bridge");
    awtBridgeGroup.setSize (300, 300);


        Composite embeddedComposite = new Composite(awtBridgeGroup,   
        SWT.EMBEDDED);
	 embeddedComposite.setLayout(new GridLayout());
	 embeddedComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
	 embeddedComposite.setSize(awtBridgeGroup.getSize().x - 5,
                                                    
awtBridgeGroup.getSize().y -5);

    awtTopFrame = SWT_AWT.new_Frame (embeddedComposite);


If I don't use a composite wrapper, then I get the exception below
when closing the window.  For some reason using a subclass of
Composite to contain the SWT_AWT Frame doesn't kill off the
WComponentPeer in the AWT EventQueue?

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException:
null pData
	at sun.awt.windows.WComponentPeer.hide(Native Method)
	at java.awt.Component.hide(Component.java:1336)
	at java.awt.Window.hide(Window.java:565)
	at sun.awt.EmbeddedFrame.hide(EmbeddedFrame.java:176)
	at java.awt.Window$1DisposeAction.run(Window.java:627)
	at java.awt.Window.doDispose(Window.java:641)
	at java.awt.Window.dispose(Window.java:596)
	at org.eclipse.swt.awt.SWT_AWT$2.run(SWT_AWT.java:164)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)


Back to the top