JavaFX and Swing on same Thread
"Lusito" <[email protected]>
| Newsgroups | gmane.comp.java.netbeans.modules.openide.devel |
|---|---|
| Message-ID | <[email protected]> |
On the book "JavaFX- Rich Client Programming on the NetBeans Platform", the authors mentioned the experimental feature to run javafx on the same thread as swing. I was wondering if anyone got this working. I tried enabling it with this option in the app.conf: Code: -J-Djavafx.embed.singleThread=true But I get an exception on startup: > at org.netbeans.core.windows.WindowManagerImpl.warnIfNotInEDT(WindowManagerImpl.java:1770) > at org.netbeans.core.windows.ModeImpl.setBounds(ModeImpl.java:180) > at org.netbeans.core.windows.PersistenceHandler.initModeFromConfig(PersistenceHandler.java:465) > at org.netbeans.core.windows.PersistenceHandler.load(PersistenceHandler.java:204) > at org.netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:81) > at org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:229) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) > at java.awt.EventQueue.access$500(EventQueue.java:97) > at java.awt.EventQueue$3.run(EventQueue.java:709) > at java.awt.EventQueue$3.run(EventQueue.java:703) > at java.security.AccessController.doPrivileged(Native Method) > at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) > at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) > at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) > at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) > at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) > SEVERE [global] > java.lang.AssertionError: Window System API is required to be called from AWT thread only, see http://core.netbeans.org/proposals/threading/ > at org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThread(WindowManagerImpl.java:1734) > at org.netbeans.core.windows.ModeImpl.getSelectedTopComponent(ModeImpl.java:312) > at org.netbeans.core.windows.PersistenceHandler.load(PersistenceHandler.java:236) > at org.netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:81) > at org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:229) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) > at java.awt.EventQueue.access$500(EventQueue.java:97) > at java.awt.EventQueue$3.run(EventQueue.java:709) > at java.awt.EventQueue$3.run(EventQueue.java:703) > at java.security.AccessController.doPrivileged(Native Method) > at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) > at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) > [catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) > at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) > at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) > Looking at the code, it seems SwingUtilities.isEventDispatchThread() is returning false at that point. That's weird, since the stacktrace shows it is on the EDT. I know this is marked experimental, but why mention it in the book, if it's preventing a netbeans platform app from running? So I'm guessing there must be some way to get this running.