求助出现下面的问题该如何解决

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at work.Window$Police.actionPerformed(Window.java:116)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    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:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    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)

代码如下:

package work;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Window extends JFrame {
    JPanel jp1, jp2, jp3, jp4, jp5;
    JLabel label, lb1,lb2,lb3;
    JTextField jtf;
    JPasswordField jpf1, jpf2;
    JButton jb1, jb2, jb3;

    public Window() {
        init();// 调用初始化
        setTitle("服装管理系统登录界面");// 设置窗口标题
        setVisible(true);
        setSize(800, 800);
        setLocation(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void init() {
        // 创建布局
        setLayout(new GridLayout(5, 3));
        // 创建标签
        label = new JLabel("请登录或注册你的服装管理账号");
        lb1 = new JLabel("用户名 :");
        lb2 = new JLabel("密  码 :");
        lb3 = new JLabel("确认密码:");
        //设置标签大小
        label.setFont(new Font("宋体",Font.BOLD,30));
        lb1.setFont(new Font(lb1.getFont().getName(), lb1.getFont().getStyle(), 25));
        lb2.setFont(new Font(lb2.getFont().getName(), lb2.getFont().getStyle(), 25));
        lb3.setFont(new Font(lb3.getFont().getName(), lb3.getFont().getStyle(), 25));

        // 创建面板
        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();
        jp5 = new JPanel();
        // 创建文本框
        JTextField jtf = new JTextField(22);
        
        // 创建密码框
        jpf1 = new JPasswordField(22);
        jpf2 = new JPasswordField(22);
        
        // 创建按钮
        jb1 = new JButton("登录");
        jb2 = new JButton("注册");
        jb3 = new JButton("退出系统");
        Dimension bs=new Dimension(120,50);
        jb1.setPreferredSize(bs);
        jb2.setPreferredSize(bs);
        jb3.setPreferredSize(bs);
        // 加入各个组件
        jp1.add(label);
        jp2.add(lb1, JLabel.CENTER);
        jp2.add(jtf);
        jp3.add(lb2, JLabel.CENTER);
        jp3.add(jpf1);
        jp4.add(lb3, JLabel.CENTER);
        jp4.add(jpf2);
        jp5.add(jb1);
        jp5.add(jb2);
        jp5.add(jb3);
        add(jp1);
        add(jp2);
        add(jp3);
        add(jp4);
        add(jp5);

        Police p = new Police();
        p.setWindow(this);
        jb1.addActionListener(p);// 登录按键添加动作监听
        jb2.addActionListener(p);// 注册按键添加动作监听
        jb3.addActionListener(p);// 退出按键添加动作监听

    }

    class Police implements ActionListener {
        Window window;// 定义窗口类的对象

        public void setWindow(Window window) {
            this.window = window;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            
             /*登录按钮的监听事件 用户名,
              * 密码或再次确认密码不能为空 
              * 查找账号信息是否存在 两次密码不一致! 
              * 登录成功 
              * 该用户未注册
              */
             if (e.getSource() == jb1) {// 判断事件源是否来自jb1
                if (jtf.getText().equals("") || jpf1.equals("") || jpf2.equals("")) {
                    JOptionPane.showInputDialog(this, "用户名,密码或再次确认密码不能为空");
                    // 清空文本框密码框
                    jtf.setText("");
                    jpf1.setText("");
                    jpf2.setText("");

                } else {
                    try {
                        BufferedWriter bw = new BufferedWriter(new FileWriter("./src/work/保存账号信息.txt", true));// true追加录入
                        String sum = jtf.getText() + " " + jpf1;
                        BufferedReader br = new BufferedReader(new FileReader("./src/work/保存账号信息.txt"));
                        String text;
                        Boolean c = false;
                        while ((text = br.readLine()) != null) {

                            if (sum.equals(text)) {
                                c = true; // 查找账号信息是否存在,存在返回true,不存在返回false
                            }
                        }
                        br.close();

                        if (jpf1!=jpf2){
                            JOptionPane.showInputDialog(this, "两次密码不一致!");
                            // 清空文本框密码框
                            jtf.setText("");
                            jpf1.setText("");
                            jpf2.setText("");
                        } else {
                            if (c) {
                                JOptionPane.showInputDialog(this, "登录成功");
                                setVisible(false);// 隐藏当前窗口
                                new Window2();
                            } else {
                                JOptionPane.showInputDialog(this, "该用户未注册!");
                                // 清空文本框密码框
                                jtf.setText("");
                                jpf1.setText("");
                                jpf2.setText("");
                            }

                        }

                    } catch (IOException ee) {
                    }
                }
            }
            /*
             * 注册按钮监听事件 
             * 用户名,密码或再次确认密码不能为空 
             * 两次密码不一致! 
             * 注册成功 
             * 该用户已注册
             */
            if (e.getSource() == jb2)// 判断事件源是否来自jb2

            {
                if (jtf.getText().equals("") || jpf1.equals("") || jpf2.equals("")) {
                    JOptionPane.showInputDialog(this, "用户名,密码或再次确认密码不能为空");
                    // 清空文本框密码框
                    jtf.setText("");
                    jpf1.setText("");
                    jpf2.setText("");
                } else {
                    try {
                        BufferedWriter bw = new BufferedWriter(new FileWriter("./src/work/保存账号信息.txt", true));// true追加录入
                        String sum =jtf.getText() + " " + jpf1;
                        BufferedReader br = new BufferedReader(new FileReader("./src/work/保存账号信息.txt"));
                        Boolean c = true;
                        String text;
                        while ((text = br.readLine()) != null) {
                            if (sum.equals(text)) {
                                c = false;
                            }
                        }
                        br.close();
                        if (jpf1!=jpf2) {
                            JOptionPane.showInputDialog(this, "两次密码不一致!");
                            // 清空文本框密码框
                            jtf.setText("");
                            jpf1.setText("");
                            jpf2.setText("");
                        } else {
                            if (c) {
                                bw.write(sum);
                                bw.newLine();// 生成换行符
                                bw.close();
                                JOptionPane.showInputDialog(this, "注册成功!");
                                // 清空文本框密码框
                                jtf.setText("");
                                jpf1.setText("");
                                jpf2.setText("");
                            }

                            else {
                                JOptionPane.showInputDialog(this, "该用户已注册!");
                                // 清空文本框密码框
                                jtf.setText("");
                                jpf1.setText("");
                                jpf2.setText("");
                            }
                        }
                    } catch (IOException ee) {
                    }
                }
            }
            if (e.getSource() == jb3) {
                setVisible(false);
            }

        }
    }

}
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值