• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

java swing 登陆界面的空指针异常?

我这里是一个简单的用户登录的程序,有两个Jpanel(pnlTop和主体部分),主体部分有user的JPanel,PassWord的JPanel。
其中,用户的密码、用户名信息都是存储在"information"路径下的"Customer.txt"文件里面的。
isCorrect()和checkInput()属于自定义的方法,用于检查输入和文件内的信息是否匹配。
package UI;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;import Controller.CustomerController;import Customer.Customer;import myComp.MyPicPanel;public class LoginForm extends BaseDialog{    private JPanel pnlMain = null;    private JPanel pnlTop = null;    private JPanel pnlUsername = null;    private JPanel pnlPassword =null;    private JPanel pnlButton = null;    private JLabel lblUsername = null;    private JLabel lblPassword= null;    private JButton btnExit= null;    private JButton btnLogin= null;    private JTextField txtUsername= null;    private JPasswordField txtPassword= null;    public LoginForm(){        pnlTop = new MyPicPanel("images/2.jpg",400,90);        pnlTop.setPreferredSize(new Dimension(400,90));        this.add(pnlTop, BorderLayout.NORTH);        pnlMain = new JPanel();        pnlMain.setLayout(new BorderLayout());        pnlMain.setBorder(new EmptyBorder(5,0,0,0));        pnlMain.setBackground(Color.LIGHT_GRAY);        this.add(pnlMain, BorderLayout.CENTER);        initUI();    }    public void initUI(){        //user name panel        pnlUsername = new JPanel();        pnlUsername.setPreferredSize(new Dimension(this.getWidth(),60));        pnlUsername.setBorder(new EmptyBorder(10,0,0,0));        pnlMain.add(pnlUsername,BorderLayout.NORTH);        //password panel        pnlPassword = new JPanel();        pnlPassword.setPreferredSize(new Dimension(this.getWidth(),60));        pnlMain.add(pnlPassword,BorderLayout.CENTER);        //button panel        pnlButton = new JPanel();        pnlButton.setPreferredSize(new Dimension(this.getWidth(),60));        pnlMain.add(pnlButton,BorderLayout.SOUTH);        addUsername(pnlUsername);        addPassword(pnlPassword);        addButton(pnlButton);    }     public ActionListener onclickListener = new ActionListener(){        @Override        public void actionPerformed(ActionEvent e){            JButton jb = (JButton)e.getSource();            if(jb.getActionCommand().equals("login")){                if(checkInput()){                        if(isCorrect()){                            Mainform main = new Mainform();                            dispose();                        }                    }else{                    JOptionPane.showMessageDialog(null, "登录失败","Gourmet Coffee System",                            JOptionPane.ERROR_MESSAGE);                }            }else if(jb.getActionCommand().equals("exit")){                System.exit(0);            }        }    };    private void addPassword(JPanel pnlPassword) {        JLabel lblPassword = new JLabel("Password");        lblPassword.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20));        pnlPassword.add(lblPassword);        txtPassword = new JPasswordField(10);         pnlPassword.add(txtPassword);    }    private void addUsername(JPanel pnlUsername) {        JLabel lblUsername = new JLabel("Account");        lblUsername.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20));        pnlUsername.add(lblUsername);        txtUsername = new JTextField(10);        pnlUsername.add(txtUsername);    }    //默认FlowLayout        private void addButton(JPanel pnlButton) {            btnLogin = new JButton("Login");            btnLogin.setActionCommand("login");            btnLogin.addActionListener(onclickListener);            pnlButton.add(btnLogin);            btnExit = new JButton("Exit");            btnExit.setActionCommand("exit");            btnExit.addActionListener(onclickListener);            pnlButton.add(btnExit);        }    public boolean isCorrect(){        boolean flag = true;        CustomerController userManager =  new CustomerController();        ArrayList customers = userManager.readObject("information","Customer.txt");        for(Customer customer: customers){            if(customer.getAccount().equals(txtUsername.getText().trim()))            {                if((String.valueOf(txtPassword.getPassword().equals(customer.getPassword()))) != null){                    flag = true;                }            }        }        return flag;    }    public boolean checkInput(){        boolean flag = true;        if(txtUsername.getText().trim().isEmpty()){            this.showMessage("账号不许为空!");            txtUsername.requestFocus();            flag = false;        }        if(String.valueOf(txtPassword.getPassword()).trim().isEmpty()){            this.showMessage("密码不许为空!");            txtPassword.requestFocus();            flag = false;        }        return flag;    }    public void showMessage(String msg){        JOptionPane.showMessageDialog(null, msg,this.getTitle(),JOptionPane.ERROR_MESSAGE);    }}输出界面是这样:


221002ifeaeeitxvehpztz.jpg



但是每次输入用户名和密码(只要不是空,无论输入什么)都会报空指针异常。
这是异常片段:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException    at UI.Mainform.removeButton(Mainform.java:134)    at UI.Mainform.(Mainform.java:71)    at UI.LoginForm$1.actionPerformed(LoginForm.java:95)折磨了我整整一个下午加晚上…明天就要交了 求救啊各位大佬……

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

提示一下,空指针异常也叫越界异常,是不是数组或者集合出现越界了?

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!