创建 JTextPane 导致 NullPointerException - OpenOffice Extension
Creating JTextPane is leading to NullPointerException - OpenOffice Extension
我目前正在开发 OpenOffice 的扩展。我正在使用 Java 1.6 和 OpenOffice SDK 4.1.2。
如果我尝试创建 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.run(DialogManager.java:334)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.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 Palette 上将 JTexPane 添加到设计器中,它就可以工作。只有构造函数中的初始化失败。
可能无法在不崩溃的情况下使用 Swing 完成此任务。相反,使用 com.sun.star.awt module. Complete examples are at http://api.libreoffice.org/examples/DevelopersGuide/examples.html#GraphicalUserInterfaces.
有关详细信息,请参阅 Creating Dialogs at Runtime。
还有一个link:This example确实使用了Swing。试试看是否会出现同样的问题。
我的肮脏解决方案是在 try-catch 中初始化 JTextPane 两次。因为在第二次通话中我没有得到异常。
我目前正在开发 OpenOffice 的扩展。我正在使用 Java 1.6 和 OpenOffice SDK 4.1.2。
如果我尝试创建 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.run(DialogManager.java:334)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.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 Palette 上将 JTexPane 添加到设计器中,它就可以工作。只有构造函数中的初始化失败。
可能无法在不崩溃的情况下使用 Swing 完成此任务。相反,使用 com.sun.star.awt module. Complete examples are at http://api.libreoffice.org/examples/DevelopersGuide/examples.html#GraphicalUserInterfaces.
有关详细信息,请参阅 Creating Dialogs at Runtime。
还有一个link:This example确实使用了Swing。试试看是否会出现同样的问题。
我的肮脏解决方案是在 try-catch 中初始化 JTextPane 两次。因为在第二次通话中我没有得到异常。