使用java swing(带有数据库文件)编写的登录表单出错

使用java swing(带有数据库文件)编写的登录表单出错,java,swing,login,Java,Swing,Login,验证此Java Swing代码中的用户名和密码时出错: import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; public class LoginForm extends JFrame implements ActionListener { private JButton login; private JTextField name; private J

验证此Java Swing代码中的用户名和密码时出错:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;

public class LoginForm extends JFrame implements ActionListener {
    private JButton login;
    private JTextField name;
    private JPasswordField pw;

    private LoginForm() {
        super("Log in");
        login = new JButton("Log in");
        name = new JTextField(20);
        pw = new JPasswordField(20);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        JPanel fields = new JPanel(new BorderLayout());
        fields.add(name, "North");
        fields.add(new JScrollPane(), "Center");
        fields.add(pw, "South");
        add(fields, "Center");
        add(new JPanel(), "South");
        add(new JPanel(), "North");
        JPanel j = new JPanel();
        j.setSize(100, 400);
        j.add(login);
        //j.add(new JLabel("|\n|\n|-> Username"));
        setSize(600, 400);
        add(j, "West");
        login.addActionListener(this);
        setVisible(true);
    }

    public static void main(String[] args) {
        new LoginForm();
    }

    public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == login) {
            if (!validUser(name.getText(), pw.getPassword())) JOptionPane.showMessageDialog(null, "This user not exists.\nFor create a user,\n  edit 'database.lfrm' file."
                , "Error!", JOptionPane.ERROR_MESSAGE);
            else JOptionPane.showMessageDialog(null, "This user is valid! Congraulations!");
        } else throw new RuntimeException("Event source isn't be a " + login.toString());
    }
    private static boolean validUser(String name, char[] pwd) {
        boolean res = false;
        try {
            BufferedReader br = new BufferedReader(new FileReader("database.lfrm"));
            String all = "", lines[], user[], line;
            while ((line = br.readLine()) != null) all += line;
            lines = all.split("\n");
            user = Arrays.asList(lines).get(Arrays.asList(lines).indexOf(name + " $ " + new String(pwd))).split(" $ ");
            if (user == new String[]{name, new String(pwd)}) res = true;
        } catch (IOException e) {e.printStackTrace();}
        return res;
    }
}
我编译并运行了这段代码,出现了一个“错误”:

此用户不存在。
要创建用户,请编辑“database.lfrm”文件。

我的“database.lfrm”文件如下所示:

JavaUser$adimn

我想问题在于:

if (user == new String[]{name, new String(pwd)}) res = true;
执行此操作时,您正在检查“user”和String[]元素是否是同一个对象,这是不正确的,因为String[]元素是为验证而创建的另一个对象

您要检查的是“用户”数组和下一个数组的内容是否相同,您可以通过以下方法替换此行:

if (Arrays.equals(user, new String[] {name, new String(pwd)})) res = true;