我创建了一个JDialog
. 当它出现时,我有一个上面JTabbedPane
有几个FormPanel
s 的。表单面板作为表单文件加载(我使用Abeille创建表单。)在我尝试将 a 添加JTable
到其中一个表单(再次通过 Abeille)之前,我没有遇到任何问题。我像我一样添加表单其余选项卡,但是当我运行时dialog.pack
,它会抛出一个NullPointerException
. 该表格内的表格似乎不是null
因为我可以从中获取值。我看不出是什么原因造成的null
。
private JDialog m_dialog;
private FormPanel m_panelForm;
private FormPanel m_tableEditorForm;
private FormPanel m_fieldEditorForm;
private FormPanel m_seedDataEditorForm;
JFrame appFrame = App.getInstance().getFrame();
m_dialog = new JDialog(appFrame, "Dialog Title"), true);
m_dialog.setName("Dialog"));
m_dialog.setLocationRelativeTo(appFrame);
// Load dialog layout
m_panelForm = getFormPanel("DLG_EDIT_PANEL");
m_tableEditorForm = getFormPanel("DLG_TABLE_EDITOR");
m_fieldEditorForm = getFormPanel("DLG_FIELD_EDITOR");
m_seedDataEditorForm = getFormPanel("DLG_SEED_DATA_EDITOR");
JTabbedPane pane = m_panelForm.getTabbedPane("editPane");
//Set up the tabs
pane.insertTab("Table", null, m_tableEditorForm, null, 0);
pane.insertTab("Field", null, m_fieldEditorForm, null, 1);
pane.insertTab("Seed", null, m_seedDataEditorForm, null, 2);
m_panelForm.reset();
m_dialog.setContentPane(m_panelForm);
m_dialog.pack();
第三个插入物,称为“种子”的插入物将其吹灭;如果我注释掉该行,其他选项卡会显示得很好。同样,如果我JTable
从 Abeille 的表单中删除该选项卡,则该选项卡会正常显示。
注意columnCount
androwCount
默认为 2。还要注意,如果我关闭包,我会setVisible
关闭JDialog
会引发相同的错误。
任何帮助,将不胜感激; 我在 Swing 方面还可以,但还差得很远。
堆栈跟踪:
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 com.jeta.open.support.DefaultComponentFinder.unregisterComponent(未知来源) 在 com.jeta.open.support.DefaultComponentFinder.componentRemoved(未知来源) 在 java.awt.AWTEventMulticaster.componentRemoved (AWTEventMulticaster.java:193) 在 java.awt.Container.processContainerEvent(Container.java:2070) 在 java.awt.Container.processEvent(Container.java:2038) 在 java.awt.Component.dispatchEventImpl(Component.java:4652) 在 java.awt.Container.dispatchEventImpl(Container.java:2099) 在 java.awt.Component.dispatchEvent(Component.java:4482) 在 java.awt.Container.remove(Container.java:1162) 在 java.awt.Container.remove(Container.java:1198) 在 java.awt.Container.addImpl(Container.java:1046) 在 java.awt.Container.add(Container.java:927) 在 javax.swing.plaf.basic.BasicScrollPaneUI.updateColumnHeader(BasicScrollPaneUI.java:606) 在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.scrollPanePropertyChange(BasicScrollPaneUI.java:1102) 在 javax.swing.plaf.basic.BasicScrollPaneUI$Handler.propertyChange(BasicScrollPaneUI.java:1079) 在 java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339) 在 java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276) 在 java.awt.Component.firePropertyChange(Component.java:8154) 在 javax.swing.JScrollPane.setColumnHeader(JScrollPane.java:1095) 在 javax.swing.JScrollPane.setColumnHeaderView(JScrollPane.java:1120) 在 javax.swing.JTable.configureEnclosureScrollPane(JTable.java:713) 在 javax.swing.JTable.addNotify(JTable.java:684) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 java.awt.Container.addNotify(Container.java:2578) 在 javax.swing.JComponent.addNotify(JComponent.java:4685) 在 javax.swing.JRootPane.addNotify(JRootPane.java:739) 在 java.awt.Container.addNotify(Container.java:2578) 在 java.awt.Window.addNotify(Window.java:663) 在 java.awt.Dialog.addNotify(Dialog.java:743) 在 java.awt.Window.pack(Window.java:704) 在 com.follett.fsc.core.utils.schema.workbench.gui.dialogs.EditTableDialog.showDialog(EditTableDialog.java:108) 在 com.follett.fsc.core.utils.schema.workbench.gui.components.Tab.doEditTableRow(Tab.java:1354) 在 com.follett.fsc.core.utils.schema.workbench.gui.components.Tab.doEditRow(Tab.java:1437) 在 com.follett.fsc.core.utils.schema.workbench.gui.components.Tab$17$1.run(Tab.java:1016) 在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642) 在 java.awt.EventQueue.access$000(EventQueue.java:85) 在 java.awt.EventQueue$1.run(EventQueue.java:603) 在 java.awt.EventQueue$1.run(EventQueue.java:601) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:612) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)