Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jFrame登录屏幕,在netbeans中读取2个文本文件_Java_Netbeans_Text Files - Fatal编程技术网

Java jFrame登录屏幕,在netbeans中读取2个文本文件

Java jFrame登录屏幕,在netbeans中读取2个文本文件,java,netbeans,text-files,Java,Netbeans,Text Files,所以我开始为我的PAT 12年级任务创建这个项目,我遇到了一个减速带。。。 我在netbeans中有一个使用jFrame的登录屏幕。 我的问题是,我使用2个文本文件来存储数据:1个用于用户名,1个用于密码。它们使用扫描仪读取,并用#分隔。 关键是,我使用while循环验证用户名,但无法验证与另一个文本文件中的用户名对应的密码 因此,您可以想象两个文本文件: 用户名 密码 单击“登录”按钮时,它使用while循环检查用户名是否已存在。如果存在,请继续输入密码,否则“用户名不存在”。当匹配另一个

所以我开始为我的PAT 12年级任务创建这个项目,我遇到了一个减速带。。。 我在netbeans中有一个使用jFrame的登录屏幕。 我的问题是,我使用2个文本文件来存储数据:1个用于用户名,1个用于密码。它们使用扫描仪读取,并用#分隔。 关键是,我使用while循环验证用户名,但无法验证与另一个文本文件中的用户名对应的密码

因此,您可以想象两个文本文件:

  • 用户名
  • 密码
单击“登录”按钮时,它使用while循环检查用户名是否已存在。如果存在,请继续输入密码,否则“用户名不存在”。当匹配另一个文本文件中相同位置的密码时会出现问题

如果有人能帮助我,这将使我的星期和保存我的项目。 请理解,Netbeans只允许您编辑某些代码区域。我尽我最大的努力保持我的代码干净易懂

非常感谢,, 白雪公主

package Battlefield4;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Login extends javax.swing.JFrame
{

String Username;
String Password;

public Login()
{
    initComponents();
}
             //Can not edit from here on      
private void initComponents() {

    txtUsername = new javax.swing.JTextField();
    txtPassword = new javax.swing.JTextField();
    lblPassword = new javax.swing.JLabel();
    lblUsername = new javax.swing.JLabel();
    btnLogin = new javax.swing.JButton();
    btnCreate = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setSize(new java.awt.Dimension(854, 480));
    getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
    getContentPane().add(txtUsername, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 150, 210, -1));
    getContentPane().add(txtPassword, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 220, 210, -1));

    lblPassword.setText("Password");
    getContentPane().add(lblPassword, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 200, -1, -1));

    lblUsername.setText("Username");
    getContentPane().add(lblUsername, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 130, -1, -1));

    btnLogin.setText("Login");
    btnLogin.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnLoginActionPerformed(evt);
        }
    });
    getContentPane().add(btnLogin, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 290, -1, -1));

    btnCreate.setText("Create");
    btnCreate.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnCreateActionPerformed(evt);
        }
    });
    getContentPane().add(btnCreate, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 290, -1, -1));

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Battlefield4/Batfield/Background/Login (Small).jpg"))); // NOI18N
    jLabel1.setText("jLabel1");
    getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 860, 480));

    pack();
}                        
//Can not edit before this
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
    //This is from where Netbeans lets you edit your code.
    try {
        File user = new File("C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Username.txt"); //To create a universal file for Input & Output
        File pass = new File("C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Password.txt"); //To create a universal file for Input & Output
        user.getParentFile().mkdirs(); //To denote the parent file
        pass.getParentFile().mkdirs(); //To denote the parent file
        Scanner scUser = new Scanner(user).useDelimiter("#"); //To scan the Username file
        Scanner scPass = new Scanner(pass).useDelimiter("#");
        Username = txtUsername.getText(); //This gets the user input
        Password = txtPassword.getText(); //This gets the user input
        int pos = 0; //Indicates the position of the Username in the save file

        while(scUser.hasNext())
        {
            pos = pos + 1;

            if(scUser.equals(Username))
            { //This is where it fails
                for (int i = 0; i <= 5; i++)
                {
                    while(scPass.hasNext())
                    {
                        System.out.print(scPass);
                    }
                }

                if(scPass.equals(Password))
                {
                    new Selection().setVisible(true);
                    this.dispose();
                }
                else
                {
                   JOptionPane.showMessageDialog(null,"Incorrect Password!");
                }
            }//This is where it works from. The above code is sketchy
            else
            {
                JOptionPane.showMessageDialog(null,"User Does Not Exist!");
            }
            scUser.close();
        }
    }
    catch (FileNotFoundException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }

}                                        

private void btnCreateActionPerformed(java.awt.event.ActionEvent evt) {                                          
   //Again this is from where Netbeans lets you edit
    try {
        File user = new File("C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Username.txt"); //To create a universal file for Input & Output
        File pass = new File("C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Password.txt"); //To create a universal file for Input & Output
        user.getParentFile().mkdirs(); //To denote the parent file
        pass.getParentFile().mkdirs(); //To denote the parent file
        Scanner scUser = new Scanner(user); //To scan the Username file
        Username = txtUsername.getText(); //This gets the user input
        Password = txtPassword.getText(); //This gets the user input

        if(scUser.nextLine().contains(Username)) //This reads the entire line and checks for an indexOf of those characters
        {
            JOptionPane.showMessageDialog(null,"User Already Exists!");
            scUser.close(); //Close the Scanner
        }
        else
        {
            scUser.close(); //Close the Scanner
            if("".equals(Password) || " ".equals(Password)) //Checks to see whether or not the user entered a password
            {
                JOptionPane.showMessageDialog(null,"Please Enter A Password!");
            }
            else
            {
               PrintWriter pwUser = new PrintWriter(new FileWriter(user,true)); //To Write to the Username file
               PrintWriter pwPass = new PrintWriter(new FileWriter(pass,true)); //To Write to the Password file
               pwUser.print(Username + "#");
               pwPass.print(Password + "#");
               pwUser.close();
               pwPass.close();

               new Selection().setVisible(true);
               this.dispose();
            }
        }
        scUser.close();
    }
    catch (FileNotFoundException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }

}                                         
 //Can no longer edit here
 public static void main(String args[]) {

    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Login().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton btnCreate;
private javax.swing.JButton btnLogin;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel lblPassword;
private javax.swing.JLabel lblUsername;
private javax.swing.JTextField txtPassword;
private javax.swing.JTextField txtUsername;
// End of variables declaration                   
}
包战场4;
导入javax.swing.*;
导入java.util.*;
导入java.io.*;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类登录扩展了javax.swing.JFrame
{
字符串用户名;
字符串密码;
公共登录()
{
初始化组件();
}
//从此处无法编辑
私有组件(){
txtUsername=newjavax.swing.JTextField();
txtPassword=newjavax.swing.JTextField();
lblPassword=newjavax.swing.JLabel();
lblUsername=newjavax.swing.JLabel();
btnLogin=newjavax.swing.JButton();
btnCreate=newjavax.swing.JButton();
jLabel1=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setSize(新java.awt.Dimension(854480));
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
getContentPane().add(txtUsername,new org.netbeans.lib.awtextra.AbsoluteConstraints(320150210,-1));
getContentPane().add(txtPassword,new org.netbeans.lib.awtextra.AbsoluteConstraints(320220210,-1));
lblPassword.setText(“密码”);
getContentPane().add(lblPassword,new org.netbeans.lib.awtextra.AbsoluteConstraints(320200,-1,-1));
lblUsername.setText(“用户名”);
getContentPane().add(lblUsername,new org.netbeans.lib.awtextra.AbsoluteConstraints(320130,-1,-1));
btnLogin.setText(“登录”);
btnLogin.addActionListener(新的java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的BTN(evt);
}
});
getContentPane().add(btnLogin,new org.netbeans.lib.awtextra.AbsoluteConstraints(320290,-1,-1));
btnCreate.setText(“创建”);
btnCreate.addActionListener(新的java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
执行的BTN创建操作(evt);
}
});
getContentPane().add(btnCreate,new org.netbeans.lib.awtextra.AbsoluteConstraints(460290,-1,-1));
jLabel1.setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/Battlefield4/Batfield/Background/Login(Small.jpg”));//NOI18N
jLabel1.setText(“jLabel1”);
getContentPane().add(jLabel1,new org.netbeans.lib.awtextra.AbsoluteConstraints(0,0860480));
包装();
}                        
//在此之前无法编辑
私有void btnLoginActionPerformed(java.awt.event.ActionEvent evt){
//这是Netbeans允许您编辑代码的地方。
试一试{
File user=new File(“C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Username.txt”);//为输入和输出创建通用文件
File pass=new File(“C:\\Users\\John1012\\Documents\\NetBeansProjects\\PATProject\\src\\Battlefield4\\Batfield\\Users\\Password.txt”);//为输入和输出创建通用文件
user.getParentFile().mkdirs();//表示父文件
pass.getParentFile().mkdirs();//表示父文件
Scanner scUser=new Scanner(user)。使用分隔符(“#”);//扫描用户名文件
Scanner scPass=新扫描仪(pass)。使用分隔符(“#”);
Username=txtUsername.getText();//这将获取用户输入
Password=txtPassword.getText();//这将获取用户输入
int pos=0;//表示用户名在保存文件中的位置
while(scUser.hasNext())
{
pos=pos+1;
if(scUser.equals(用户名))
{//这就是它失败的地方

for(int i=0;i在启动时映射所有用户,然后只需检查映射。使用split分隔用户名和密码。在调用onLoginCorrect()之前,检查输入是否为空

private static final Logger LOG=LogManager.getLogger();
私有最终映射用户=新ConcurrentHashMap();
公共登录(){
超级();
final InputStream resource=this.getClass().getResourceAsStream(“/users.txt”);
最终扫描仪=新扫描仪(资源);
while(scanner.hasNext()){
最终字符串输入=scanner.nextLine();
最后一个字符串[]userPw=StringUtils.split(输入“:”);
this.users.put(userPw[0],userPw[1]);
}
scanner.close();
IOUtils.closes(资源);
}
公共布尔值isLoginCorrect(最终字符串用户名、最终字符串密码){
最终布尔结果;
if(StringUtils.equals(this.users.get(用户名)、密码)){
结果=真;
}否则{
Login.LOG.warn(“没有这样的用户”);
结果=假;
}
返回结果;
}

所以我想出了办法。谢谢大家的帮助

我将此作为一种更简单的方法发布到@Tobi,希望能帮助那些没有那么先进或需要更简单帮助的人

private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         

    try {
        File user = new File("src\\Battlefield4\\Batfield\\Users\\Username.txt"); //To create a universal file for Input & Output
        File pass = new File("src\\Battlefield4\\Batfield\\Users\\Password.txt"); //To create a universal file for Input & Output
        user.getParentFile().mkdirs(); //To denote the parent file
        pass.getParentFile().mkdirs(); //To denote the parent file
        Scanner scUser = new Scanner(user).useDelimiter("#"); //To scan the Username file
        Scanner scPass = new Scanner(pass).useDelimiter("#"); //To scan the password file
        username = txtUsername.getText(); //This gets the user input
        password = txtPassword.getText(); //This gets the user input
        int pos = 0; //Indicates the position of the Username in the save file
        boolean loggedIn = false; //Flag to check if it's logged in

        while(scUser.hasNext() && scPass.hasNext()) //Runs files in congruency
        {
            if(scUser.next().equalsIgnoreCase(username) && scPass.next().equals(password))
            {
                loggedIn = true;
                scUser.close();
                scPass.close();
                new Selection(username).setVisible(true);
                this.dispose();
                break;
            }
        }
        scUser.close();
        scPass.close();
        if(loggedIn == false)
        {
            JOptionPane.showMessageDialog(null,"Incorrect Username or Password!");
        }

    }
    catch (FileNotFoundException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }

}                                        
只需使用一个文本文件,就可以编写
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         

    try {
        File user = new File("src\\Battlefield4\\Batfield\\Users\\Username.txt"); //To create a universal file for Input & Output
        File pass = new File("src\\Battlefield4\\Batfield\\Users\\Password.txt"); //To create a universal file for Input & Output
        user.getParentFile().mkdirs(); //To denote the parent file
        pass.getParentFile().mkdirs(); //To denote the parent file
        Scanner scUser = new Scanner(user).useDelimiter("#"); //To scan the Username file
        Scanner scPass = new Scanner(pass).useDelimiter("#"); //To scan the password file
        username = txtUsername.getText(); //This gets the user input
        password = txtPassword.getText(); //This gets the user input
        int pos = 0; //Indicates the position of the Username in the save file
        boolean loggedIn = false; //Flag to check if it's logged in

        while(scUser.hasNext() && scPass.hasNext()) //Runs files in congruency
        {
            if(scUser.next().equalsIgnoreCase(username) && scPass.next().equals(password))
            {
                loggedIn = true;
                scUser.close();
                scPass.close();
                new Selection(username).setVisible(true);
                this.dispose();
                break;
            }
        }
        scUser.close();
        scPass.close();
        if(loggedIn == false)
        {
            JOptionPane.showMessageDialog(null,"Incorrect Username or Password!");
        }

    }
    catch (FileNotFoundException ex)
    {
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }

}