java - JComboBox 和文件读取

标签 java swing jcombobox

我有控制用户名和密码的登录页面。

我希望当在组合框中选择管理员时,程序应将给定的用户名和密码与我的“LoginInformation.txt”文件中的第一行进行比较。

当在组合框中选择用户时,程序应将给定的用户名和密码与“LoginInformation.txt”文件中的第二行进行比较。

但是,我的代码无法正常工作!

public class LoginFrame extends javax.swing.JFrame {

private String username;
private char[] Password;
private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {

        username=String.valueOf(jTextField1.getText());
        Password=jPasswordField1.getPassword();

        if(jComboBox1.getSelectedIndex() == 0){
            if(adminCanGoNext()) {
              goAdminMainPage();
          }
           else{
                ErrorMessageLabel.setText("Did Not Match");
            }
        }


        else if(jComboBox1.getSelectedIndex() == 1){
            if(userCanGoNext()){
                goUserMainPage();
            }
        }



public boolean adminCanGoNext() throws IOException{
    FileReader fr=new FileReader("LoginInformation.txt");
    BufferedReader br=new BufferedReader(fr);
    String line;
    while((line=br.readLine()) != null){
        String[] infos=line.split("     ");
        String value=infos[0];
        String usern=infos[1];
        String pass=infos[2];

        if(usern.equals(username.trim()) && pass.equals(String.valueOf(Password))){
            return true;
        }
    }
    return false;
}

public void goAdminMainPage() {
          // Admin page
}


public boolean userCanGoNext() throws IOException{
    BufferedReader br=new BufferedReader(new FileReader("LoginInformation.txt"));
    String line;
    while( (line=br.readLine()) != null ){
        String[] celledinfo= line.split("     ");
        String userN=celledinfo[4];
        String passN=celledinfo[5];

        if(userN.equals(username.trim()) && passN.equals(String.valueOf(Password))){
            return true;
        }
    }
    return false;
}

public void goUserMainPage(){
          // User Page

}
}

我的txt文件:

Admin:     1     2
User:     1     3

我不编写由 netbeans 生成的代码。 (我在 jcombobox 中的第一个索引是 admin,第二个索引是 user)

感谢您的帮助。

最佳答案

adminCanGoNext中,您将对照密码文件的每一行检查用户/密码。您不关心用户选择“用户”或“管理员”这一事实。 (这样您只需匹配以“Admin:”开头的行或以“User:”开头的行)

userCanGoNext 中:存在类似的错误,但此外,您正在索引 4 和 5 处查找用户名和密码。 根据您发布的文件模板:分割结果的数组永远不会超过 3 个元素。

关于java - JComboBox 和文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14815903/

相关文章:

java - 是否有解决 Java 在遍历大型目录时性能不佳的方法?

java - Java 应用程序是否可以使用 Aero Glass 效果?

java - 从像素值重新创建整数时出现 ArrayIndexOutOfBounds 异常

java - 如何在eclipse中将java项目转换为.exe文件

java - 使用paintComponent以颜色为参数绘制图形

java - JComboBox 中的 List<String> 数组

java - 如何使 JComboBox 下拉列表在 JTable 中始终可见

java - 带有组合框的 AutoCompleteDecorator

java - wsimport 生成的代码 - 打包代码的最佳实践

java - 当显示 "AlwaysOnTop"框架时,Mac 中的菜单项将被禁用