2016-08-12 64 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

相關問題