做图书系统弹出的 java.lang.NullPointerException问题

做Java的图书管理系统时,用WindowsBuilder建立内部窗口后,无法打开怎么办?不知道是哪里有问题,求助一下各位大佬

Console:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.view.MainFrm$2.actionPerformed(MainFrm.java:63)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.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)
 

图书系统主界面:

package com.view;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JDesktopPane;
import javax.swing.BoxLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainFrm extends JFrame { 

    private JPanel contentPane;
    private JDesktopPane table=null;//人工优化:table实例化放前面
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainFrm frame = new MainFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MainFrm() {
        setTitle("\u65B0\u6587\u5316\u56FE\u4E66\u7BA1\u7406\u7CFB\u7EDF-\u4E3B\u754C\u9762");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        
        JMenu menu = new JMenu("\u57FA\u672C\u6570\u636E\u7EF4\u62A4");
        menuBar.add(menu);
        
        JMenu menu_2 = new JMenu("\u56FE\u4E66\u7C7B\u522B\u7BA1\u7406");
        menu.add(menu_2);
        
        JMenuItem menuItem_2 = new JMenuItem("\u56FE\u4E66\u7C7B\u522B\u6DFB\u52A0");
        menuItem_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                BookTypeAddInter BookTypeAddInter=new BookTypeAddInter();
                BookTypeAddInter.setVisible(true);
                table.add(BookTypeAddInter);
            }
        });
        menu_2.add(menuItem_2);
        
        JMenuItem mntmNewMenuItem = new JMenuItem("\u56FE\u4E66\u7C7B\u522B\u7EF4\u62A4");
        menu_2.add(mntmNewMenuItem);
        
        JMenu menu_3 = new JMenu("\u56FE\u4E66\u7BA1\u7406");
        menu.add(menu_3);
        
        JMenu menu_6 = new JMenu("\u56FE\u4E66\u6DFB\u52A0");
        menu_3.add(menu_6);
        
        JMenu menu_7 = new JMenu("\u56FE\u4E66\u7EF4\u62A4");
        menu_3.add(menu_7);
        
        JMenuItem menuItem_1 = new JMenuItem("\u5B89\u5168\u9000\u51FA");
        menuItem_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //弹出询问窗口
                //返回int=0/1/2,对应是/否/取消
                int result=JOptionPane.showConfirmDialog(null, "是否退出系统?");
                if(result==0) {
                    dispose();
                }
            }
        });
        menu.add(menuItem_1);
        
        JMenuBar menuBar_1 = new JMenuBar();
        menuBar_1.setToolTipText("");
        menu.add(menuBar_1);
        
        JMenu menu_1 = new JMenu("\u5173\u4E8E\u6211\u4EEC");
        menuBar.add(menu_1);
        
        JMenuItem menuItem = new JMenuItem("\u611F\u8C22\u60A8\u4F7F\u7528\u65B0\u6587\u5316\u7CFB\u7EDF\u9E2D~");
        menuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //弹出感谢窗口
                ThanksInterFrame Thanks=new ThanksInterFrame();//实例化感谢窗口
                Thanks.setVisible(true);//感谢窗口可见
                table.add(Thanks);//添加内部窗体组件
            }
        });
        menu_1.add(menuItem);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));
        
        JDesktopPane table = new JDesktopPane();
        contentPane.add(table, BorderLayout.CENTER);
        
        //设置JFrame最大化
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}
 

 

NullPointerException空指针异常是因为菜单不存在,要把菜单的定义放在构造函数的外面,变成成员变量。