2016-08-12 63 views
0

我目前正在开发OpenOffice的扩展。我正在使用Java 1.6和OpenOffice SDK 4.1.2。创建JTextPane导致NullPointerException - OpenOffice Extension

如果我尝试创建一个javax.swing.JTextPane,我在JTextPane的构造函数中得到一个NullpointerException。

public class Dialog extends javax.JFrame { 

private final JTextPane jTextPane; 
private final JTable jTable; 



    public Dialog() { 
     jTable = new JTable(); 
     jTextPane = new JTextPane(); 

    } 
} 

对话框初始化在另一个线程:

public class DialogManager { 
private static JournalDialog journalDialog; 

public void showDialog() { 




Thread startThread = new Thread(new Runnable() { 


     @Override 
     public void run() { 

      SwingUtilities.invokeLater(new Runnable() { 

       @Override 
       public void run() { 
        dialog = new Dialog(); 
        ... 
       } 
      } 
     } 
} 
}} 

的JTable的创建工作正常,但在接下来的行我得到一个NullPointerException

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at java.util.Hashtable.put(Unknown Source) 
at javax.swing.JEditorPane.registerEditorKitForContentType(Unknown Source) 
at javax.swing.JEditorPane.registerEditorKitForContentType(Unknown Source) 
at javax.swing.JEditorPane.loadDefaultKitsIfNecessary(Unknown Source) 
at javax.swing.JEditorPane.getKitTypeRegistry(Unknown Source) 
at javax.swing.JEditorPane.getEditorKitClassNameForContentType(Unknown Source) 
at javax.swing.JTextPane.<init>(Unknown Source) 
at .gui.Dialog.<init>(Dialog.java:159) 
at .gui.DialogManager$6$1.run(DialogManager.java:334) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$500(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(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) 

我希望有人有想法是什么导致这个例外。我试图在Java 1.7和1.8中运行扩展,但也存在同样的问题。

问候

更新2016年8月16日: 如果我添加了Netbeans的调色板一个JTexPane到设计,它的工作原理。只有构造函数中的初始化失败。

+0

您知道NullPointerException钻取:哪一行是'Dialog.java:159'? –

+0

其中“jTextPane = new JTextPane();”的行叫做。 – MountRushmore

+0

和'DialogManager.java:334'是'dialog = new Dialog();' – MountRushmore

回答

0

我的肮脏的解决方案是在try-catch中两次初始化JTextPane。因为在第二次电话会议上我没有发生任何异常。

2

可能无法使用Swing进行此任务而不会崩溃。相反,请使用com.sun.star.awt模块。完整的例子是http://api.libreoffice.org/examples/DevelopersGuide/examples.html#GraphicalUserInterfaces

欲了解更多信息,请参阅Creating Dialogs at Runtime

另一个链接:This example确实使用Swing。试试看看是否出现同样的问题。

+0

@Hovercraft Full Of Eels:我编辑了我的问题,所以希望现在更清楚。它可能与UNO处理事件的方式和Swing处理它们的方式之间存在冲突。标准建议是使用UNO而不是Swing for Java宏对话框。 –

+0

感谢您的更新。 1+ –

+0

感谢您的提示。为什么我不能在我的GUI中使用Swing?在wiki中他们没有说,我必须使用com.sun.star.awt我的完整扩展名是用swing编写的,但只有JTextPane出现问题。 https://wiki.openoffice.org/wiki/Documentation/DevGuide/GUI/Graphical_User_Interfaces – MountRushmore

相关问题