做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空指针异常是因为菜单不存在,要把菜单的定义放在构造函数的外面,变成成员变量。