Java MouseInfo.getPointerInfo().getLocation()中出现异常

Java MouseInfo.getPointerInfo().getLocation()中出现异常,java,swing,javafx,nullpointerexception,cursor,Java,Swing,Javafx,Nullpointerexception,Cursor,我在GUI应用程序中使用JavaFX和Swing。 更详细地说,我在AnchorPane上使用SwingNode添加了一个JPanel和一些地图(ARCGIS JMap-仅在swing上运行),这些地图会一直刷新自己 当我在两个显示屏之间拖动应用程序时,有时会出现NullPointerException 这是发生这种情况的java代码: MouseInfo.getPointerInfo().getLocation() 拖动在JavaFX元素上执行(事件为JavaFX事件): 但是异常发生在AW

我在GUI应用程序中使用JavaFX和Swing。 更详细地说,我在AnchorPane上使用SwingNode添加了一个JPanel和一些地图(ARCGIS JMap-仅在swing上运行),这些地图会一直刷新自己

当我在两个显示屏之间拖动应用程序时,有时会出现
NullPointerException

这是发生这种情况的java代码:

MouseInfo.getPointerInfo().getLocation()
拖动在JavaFX元素上执行(事件为JavaFX事件):

但是异常发生在AWT线程上。
正如我所说,它的代码是(请注意,这是内部java代码,不是我的):

我能做些什么来防止这种情况

还有一个问题,这可能会给出一个线索——我检查过了,我唯一的Swing组件(JPanel和JMap)都是JComponent的子组件。但异常发生在JLightweightFrame中。那怎么可能呢

以下是异常的完整跟踪:

Message = Thread AWT-EventQueue-0 (Id = 45) throw exception: null Stack-Trace = java.lang.NullPointerException
    at sun.swing.JLightweightFrame.updateClientCursor(JLightweightFrame.java:473)
    at sun.swing.JLightweightFrame.access$000(JLightweightFrame.java:79)
    at sun.swing.JLightweightFrame$1.updateCursor(JLightweightFrame.java:112)
    at sun.awt.windows.WLightweightFramePeer.updateCursorImmediately(WLightweightFramePeer.java:92)
    at java.awt.Component.updateCursorImmediately(Component.java:3150)
    at java.awt.Container.validate(Container.java:1642)
    at java.awt.Window.dispatchEventImpl(Window.java:2748)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    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)

您如何将Swing与JavaFX结合?您与FX混合的Swing成分是什么?它们在不同的线程中运行。尽管您在哪里调用
MouseInfo
code?需要更多信息…;)当然我在AnchorPane上使用SwingNode添加了一个JPanel和一些地图(ARCGIS JMap-仅在swing上运行),它会一直刷新自己。关于MouseInfo,我不称之为它。stacktrace上没有我的代码。应用程序本身就可以做到这一点。如果没有一个。启动一个新项目,并向JavaFX应用程序添加一个
SwingNode
,而不使用
JMap
。然后查看问题是否发生,如果没有,则开始向其添加代码,直到获得异常。当你发现是什么原因导致它后,该程序。复制从删除的答案,以不松散它:可以
MouseInfo.getPointerInfo().getLocation()
Message = Thread AWT-EventQueue-0 (Id = 45) throw exception: null Stack-Trace = java.lang.NullPointerException
    at sun.swing.JLightweightFrame.updateClientCursor(JLightweightFrame.java:473)
    at sun.swing.JLightweightFrame.access$000(JLightweightFrame.java:79)
    at sun.swing.JLightweightFrame$1.updateCursor(JLightweightFrame.java:112)
    at sun.awt.windows.WLightweightFramePeer.updateCursorImmediately(WLightweightFramePeer.java:92)
    at java.awt.Component.updateCursorImmediately(Component.java:3150)
    at java.awt.Container.validate(Container.java:1642)
    at java.awt.Window.dispatchEventImpl(Window.java:2748)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    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)