#java #null #applet
#java #null #апплет
Вопрос:
У меня есть 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, и я считаю, что исключение выдается при загрузке новой страницы до того, как поток отправки событий завершил обработку текущего события, а апплет уже запущен .
Исключение кажется безвредным, хотя я заметил, что при его возникновении destroy()
метод апплета больше не вызывается, что теоретически может привести к проблемам.
Поиск в Google по этой проблеме выдает множество отчетов о похожих проблемах, но четкого решения нет. У кого-нибудь есть идеи, как я могу преодолеть эту проблему? Это известная ошибка? Есть ли быстрое исправление или что-то в этомроде?
С наилучшими пожеланиями, Дэн.
Ответ №1:
Вам может помочь программа invokeLater от SwingUtilities. Идея состоит в том, чтобы отменить вызов show document после того, как все события были обработаны. Просто создайте исполняемый экземпляр с вашим кодом и вызовите его.