我有一个Java小程序,我试图通过它调用getContext().showDocument(aUrl)
来导航到另一个网页。虽然浏览器正确导航到新页面,但我仍然在Java插件控制台中遇到这个令人讨厌的异常:
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException: null pData
at sun.awt.windows.WComponentPeer.getLocationOnScreen(Native Method)
at java.awt.Component.getLocationOnScreen_NoTreeLock(Unknown Source)
at java.awt.Component.getLocationOnScreen(Unknown Source)
at java.awt.LightweightDispatcher$3.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
调用showDocument()
方法时,控件位于AWT的 事件调度线程 内部,我认为在新页面加载之前会抛出异常 事件调度线程 已完成当前事件的处理,并且applet已经完成。
异常似乎是无害的,虽然我注意到当它被抛出时,applet的destroy()
方法不再被调用,理论上它可能导致问题。
谷歌在这个问题上的搜索提出了很多类似问题的报告,但没有明确的解决方案。有谁知道我怎么能克服这个问题?这是一个已知的错误?有快速解决方法吗?
祝你好运, 丹。
答案 0 :(得分:0)
SwingUtilities' invokeLater可能会对您有所帮助。 我们的想法是在处理完所有事件后将调用推迟到显示文档。只需使用您的代码创建一个Runnable实例并调用它。