我有控制用户名和密码的登录页面。
我希望当在组合框中选择管理员时,程序应将给定的用户名和密码与我的“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/