我正在编写一个需要一些图形的NetBeans插件。当我将JavaFX图表嵌入TopComponent时,我看到了NullPointer异常。当我最大化我为插件创建的任何其他TopComponent时,我看到以下异常:
java.lang.NullPointerException
at javafx.embed.swing.JFXPanel$HostContainer$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
该插件仍在运行,除了弹出异常之外,似乎没有其他问题。TopComponent已注册到
@TopComponent.Registration(mode = "commonpalette", openAtStartup = true)
和持久性类型
persistenceType=顶部组件.PERSISTENCE_NEVER
我正在创建图表
Platform.setImplicitExit(false);
Platform.runLater(new Runnable() {
@Override
public void run() {
//creating scene here <other code>
myPanel.setScene(scene);
}
});
然后将其直接添加到GroupLayout中的TopComponent
this.setLayout(layout);
//then adding myPanel to the layout
如果这也是值得注意的,我也经常看到这个错误
Dangerous reflection access to sun.misc.SharedSecrets by class com.sun.javafx.tk.quantum.QuantumToolkit$17 detected!
code location: jar:file:/C:/<my_plugin>/build/cluster/modules/ext/jfxrt.jar!/
但却让人相信我可以忽略这一点?
之前有没有其他人遇到过这个问题,或者能看出出了什么问题?我尝试过其他布局,检测JavaFX面板何时被移除,但尚未找到解决方案。如有任何建议,我们将不胜感激:)
作为参考,我的JavaFX版本是2.2.45,带有最新的NetBeans IDE。
谢谢