已有101人关注
Java错误java.lang.NullPointerException
发表在Java图书答疑 2019-03-08 悬赏:20 学分 《Java从入门到精通(第4版)》第28章 企业进销存管理系统
是否精华
版块置顶:

以下错误如何解决:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at javax.swing.ImageIcon.<init>(ImageIcon.java:217)

at com.mwq.mwing.MPanel.<init>(MPanel.java:22)

at com.mwq.frame.LandFrame.<init>(LandFrame.java:47)

at com.mwq.DrinkeryManage.<init>(DrinkeryManage.java:16)

at com.mwq.DrinkeryManage$1.run(DrinkeryManage.java:37)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege

        (ProtectionDomain.java:74)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

怎么办?

求帮助

分享到:
精彩评论 15
zhq2008
学分:968 LV7
2019-03-20
11L

    class LandButtonActionListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent e) {

            String username = usernameComboBox.getSelectedItem().toString();// 获得登录用户的名称

            if (username.equals("请选择")) {// 查看是否选择了登录用户

                JOptionPane.showMessageDialog(null, "请选择登录用户!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示

                resetUsernameAndPassword();// 恢复登录用户和登录密码

            }

            char[] passwords = passwordField.getPassword();// 获得登录用户的密码

            String inputPassword = turnCharsToString(passwords);// 将密码从char型数组转换成字符串

            if (username.equals("TSoft")) {// 查看是否为默认用户登录

                if (inputPassword.equals("111")) {// 查看密码是否为默认密码

                    land(null);// 登录成功

                    String infos[] = { "请立刻单击“用户管理”按钮添加用户!", "添加用户后需要重新登录,本系统才能正常使用!" };// 组织提示信息

                    JOptionPane.showMessageDialog(null, infos, "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示

                } else {// 密码错误

                    JOptionPane.showMessageDialog(null, "默认用户“TSoft”的登录密码为“111”!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示

                    passwordField.setText("111");// 将密码设置为默认密码

                }

            } else {

                if (inputPassword.length() == 0) {// 用户未输入登录密码

                    JOptionPane.showMessageDialog(null, "请输入登录密码!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示

                    resetUsernameAndPassword();// 恢复登录用户和登录密码

                }

                Vector user = Dao.getInstance().sUserByName(username);// 查询登录用户

                String password = user.get(5).toString();// 获得登录用户的密码

                if (inputPassword.equals(password)) {// 查看登录密码是否正确

                    land(user);// 登录成功

                } else {// 登录密码错误

                    JOptionPane.showMessageDialog(null, "登录密码错误,请确认后重新登录!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示

                    resetUsernameAndPassword();// 恢复登录用户和登录密码

                }

            }

        }

        

        private void resetUsernameAndPassword() {// 恢复登录用户和登录密码

            usernameComboBox.setSelectedIndex(0);// 恢复选中的登录用户为“请选择”项

            passwordField.setText("      ");// 恢复密码框的默认值为6个空格

            return;// 直接返回

        }

        

        private void land(Vector user) {// 登录成功

            TipWizardFrame tipWizard = new TipWizardFrame(user);// 创建主窗体对象

            tipWizard.setVisible(true);// 设置主窗体可见

            setVisible(false);// 设置登录窗口不可见

        }

        

    }

    

    private String turnCharsToString(char[] chars) {

        StringBuffer strBuf = new StringBuffer();

        for (int i = 0; i < chars.length; i++) {

            strBuf.append(chars[i]);

        }

        return strBuf.toString().trim();

    }

}

MPanel:

package com.mwq.mwing;


import java.awt.Graphics;

import java.awt.GridBagLayout;

import java.awt.Image;

import java.net.URL;


import javax.swing.ImageIcon;

import javax.swing.JPanel;


public class MPanel extends JPanel {

    

    /**

     * 

     */

    private static final long serialVersionUID = 7056298952360607443L;

    private ImageIcon imageIcon;

    public MPanel(URL imgUrl) {

        super();// 继承父类的构造方法

        setLayout(new GridBagLayout());// 将布局管理器修改为网格组布

        imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象

        setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大

    }


    @Override

    protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()方法

        super.paintComponent(g);// 调用JPanel类的paintComponent()方法

        Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象

        g.drawImage(image, 0, 0, null);// 绘制Image对象,即将图片绘制到面板中

    }

    

}


zhq2008
学分:968 LV7
2019-03-20
12L

以上五条是连起来的!

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-03-22
13L

报错就提供报错提示,你贴这么多代码又看不出你遇到了什么错误

zhq2008
学分:968 LV7
2019-03-22
14L

根号申 发表于2019-03-22 09:39

报错就提供报错提示,你贴这么多代码又看不出你遇到了什么错误

错误一样,我又把所有图片挨个都贴到每个包下面,还不行,我贴图片是因为之前有一个打地鼠游戏就是把图片放在包下才能运行成功

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-03-23
15L
  1. 你把图片地址写成你放图片的详细地址。

  2. 如果直接写图片名,就是项目的根目录。

首页上一页 12 下一页尾页 15 条记录 2/2页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照