我这里是一个简单的用户登录的程序,有两个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<Customer> 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);
}
}输出界面是这样:但是每次输入用户名和密码(只要不是空,无论输入什么)都会报空指针异常。这是异常片段:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at UI.Mainform.removeButton(Mainform.java:134)
at UI.Mainform.<init>(Mainform.java:71)
at UI.LoginForm$1.actionPerformed(LoginForm.java:95)折磨了我整整一个下午加晚上…明天就要交了 求救啊各位大佬……
添加回答
举报
0/150
提交
取消