2016-08-12 7 views
0

現在、OpenOffice用の拡張機能を開発中です。私はJava 1.6とOpenOffice SDK 4.1.2を使用しています。JTextPaneを作成するとNullPointerExceptionが発生する - OpenOffice拡張機能

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回初期化することです。 2番目の呼び出しでは例外が発生しないためです。

2

このタスクでは、クラッシュすることなくSwingを使用できない場合があります。代わりに、com.sun.star.awtモジュールを使用してください。完全な例はhttp://api.libreoffice.org/examples/DevelopersGuide/examples.html#GraphicalUserInterfacesです。

詳細については、Creating Dialogs at Runtimeを参照してください。

もう1つリンク:This exampleはスイングを使用します。同じ問題が発生しているかどうか試してみてください。

+0

@ Hovercraft Eelsの満員:私は私の質問を編集しましたので、うまくいけば、今はっきりしています。 UNOがイベントを処理する方法とSwingがそれらを処理する方法の間に矛盾があるかもしれません。標準の推奨事項は、Swing for Javaマクロダイアログの代わりにUNOを使用することです。 –

+0

ありがとうございます。 1 + –

+0

あなたのヒントをありがとう。なぜ私のGUIにSwingを使用できないのですか? wikiでは、com.sun.star.awtを使用する必要があるとは言いません。私の完全な拡張はswingで書かれていますが、JTextPaneだけが問題を起こしています。 https://wiki.openoffice.org/wiki/Documentation/DevGuide/GUI/Graphical_User_Interfaces – MountRushmore

関連する問題