使用Java Swing(带有数据库文件)编写的登录表单中的错误

Muskovets

在此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

维森特·弗莱雷(Vicente Freire)

我猜问题出在这里:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQLlte [SQLITE_BUSY] JAVA Eclipse中数据库文件被锁定(数据库被锁定)错误

如何使用Java从PostgreSQL数据库中的现有数据库创建新的XML文件

Symfony2-FOS UserBundle-使用带有数据库中数据的下拉列表覆盖注册表单

使用html表单上传sqlite数据库文件并在提交时显示其表

使用后续查询时无法打开数据库文件错误

使用现有的数据库文件但使用SQL Server Express

拦截Java中的所有数据库调用

如何在Xcode中使用现有的数据库文件进行读写?

为什么在使用Android Room时没有创建数据库文件?

使用来自 docker 的现有本地数据库文件

Java中数据库文件的相对路径

通过断言从副本数据库文件使用Room中的预填充数据库

我是否应该对Java中的所有数据库插入都使用PreparedStatements?

如何使用带有“ pyreportjasper”的python从“ jrxml”(带有数据库)转换为“ pdf”?

无法在sqlite中打开数据库文件(使用finisar.sqlite)

如何列出使用ATTACH打开的SQLite数据库文件中的表?

如何列出使用 ATTACH 打开的 SQLite 数据库文件中的表?

在H2中使用CSVREAD时删除临时数据库文件

如何使用Android连接到内部存储中的sqlite数据库文件?

使用 perl 脚本更新 xml 数据库文件

使用python打开数据库文件(.db)

MBXMapKit使用本地.mbtiles数据库文件

如何使用 Room 加载不同的数据库文件?

使用Java删除SQLite数据库文件不起作用

使用Java创建Access数据库文件(.mdb或.accdb)

如何使用Java检查SQLite数据库文件是否存在?

无法使用java的DeleteDbFiles.execute删除我的h2数据库文件

如何使用c#中的现有数据库创建新数据库?

有没有一种方法可以使用实体框架将表添加到SQL CE数据库文件中?