2016-01-03 29 views
-2

所以我想创建一个程序,为用户创建一个新的帐户,用户应该能够'登录'与同一个帐户。现在,我已经设法完成第一部分(使用数组创建帐户),但现在我不知道如何使用该帐户登录。我无法登录到我的帐户(阵列)在JavaFX

PS:当我说的密码,它只是弹出

下面的代码的alertbox:

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.control.PasswordField ; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 
public class LoginEN extends Application { 

    Button btnCreate,btnLogin; 
    TextField txtUsername; 
    PasswordField Password; 
    Label lblUsername,lblPassword; 
    int index=0; 
    String[] user = new String[11]; 
    String[] pas = new String[11]; 


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

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Create and login"); 


     btnCreate = new Button(); 
     btnCreate.setText("Create"); 

     btnLogin = new Button(); 
     btnLogin.setText("Login"); 

     txtUsername=new TextField(); 
     txtUsername.setMaxWidth(200); 

     Password=new PasswordField(); 
     Password.setMaxWidth(200); 

     lblUsername=new Label(); 
     lblUsername.setText("Username"); 

     lblPassword=new Label(); 
     lblPassword.setText("Pasword"); 

     btnCreate.setOnAction(e ->{ 
      if (index < 12){ 
      index++; 
      user[index]=txtUsername.getText(); 
      pas[index]=Password.getText(); 

      AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
      txtUsername.clear(); 
      Password.clear(); 
     }else{ 
      AlertBox.display("Error", "You reached the limit."); 
     } 
     }); 
     btnLogin.setOnAction(e ->{ 
      for (int c = 0; c < 11; c++) 
      { 
       if ((txtUsername.equals(user[c])) && (Password.equals(user[c]))) { 
        AlertBox.display("OK", " Welcome to your account"); 
       } 
       break; 
     } 
     }); 
     VBox layout = new VBox(); 
     layout.getChildren().addAll(lblUsername,txtUsername,lblPassword,Password,btnCreate,btnLogin); 
     Scene scene = new Scene(layout, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


} 

编辑,但仍然无法正常工作:■...

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.control.PasswordField ; 
import javafx.scene.control.Label; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 
public class LoginEN extends Application { 

    Button btnCreate,btnLogin; 
    TextField txtUsername; 
    PasswordField Password; 
    Label lblUsername,lblPassword; 
    int index=0; 
    String[] user = new String[11]; 
    String[] pas = new String[11]; 


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

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Create and login"); 


     btnCreate = new Button(); 
     btnCreate.setText("Create"); 

     btnLogin = new Button(); 
     btnLogin.setText("Login"); 

     txtUsername=new TextField(); 
     txtUsername.setMaxWidth(200); 

     Password=new PasswordField(); 
     Password.setMaxWidth(200); 

     lblUsername=new Label(); 
     lblUsername.setText("Username"); 

     lblPassword=new Label(); 
     lblPassword.setText("Pasword"); 

     btnCreate.setOnAction(e ->{ 
      if (index < 11){ 
      user[index]=txtUsername.getText(); 
      pas[index]=Password.getText(); 

      AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
      txtUsername.clear(); 
      Password.clear(); 
      index++; 
      }else{ 
      AlertBox.display("Error", "You reached the limit."); 
      } 
     }); 
     btnLogin.setOnAction(e ->{ 
      for (int c = 0; c < 11; c++) 
      { 
       if ((txtUsername.equals(user[c])) && (Password.equals(pas[c]))) { 
        AlertBox.display("OK", " Welcome to your account"); 
        break; 
       } 

     } 
     }); 
     VBox layout = new VBox(); 
     layout.getChildren().addAll(lblUsername,txtUsername,lblPassword,Password,btnCreate,btnLogin); 
     Scene scene = new Scene(layout, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


} 
+0

当人们冷静下来这个帖子,这只是一个问题,我知道这是一个愚蠢的,但至少帮助我,而不是downvoti ng .. – TinaXx

+0

我想指出,这个得到低投票的原因(最可能)是因为你的问题有点含糊。关于“我不知道如何使用该帐户登录”的含义并不清楚。 现在你的问题;我立即注意到的一件事是你的索引问题(仍然)。如果只有11个用户,则代码如下所示: if(index <11)需要:if(index <10)因为如果索引为10,表示已有11个用户(计数为0)。你的for循环没问题。 –

回答

0

if (index < 12){ 
    index++; 
    user[index]=txtUsername.getText(); 
    pas[index]=Password.getText(); 

    AlertBox.display("Account information","Your account has been succesfully created: \n Username: " + user[index] + " \n Pasword: " + pas[index] ); 
    txtUsername.clear(); 
    Password.clear(); 
} 

您的第一个帐户在user[1]创建的,因为你这样做

user[index]=txtUsername.getText(); 
pas[index]=Password.getText(); 

因此,有犯规之前增加'指数”存在于user[0]的用户,但在

for (int c = 0; c < 11; c++) 
{ 
    if ((txtUsername.equals(user[c])) && (Password.equals(user[c]))) { 
     AlertBox.display("OK", " Welcome to your account"); 
    } 
    break; 
} 

你开始检查用户在索引0处,并在if之后,您离开循环break;,因此您从不检查索引1到10处的任何用户。 还将txtUsernamePassword与字符串中的字符串进行了比较,但是txtUsernamePassword是inputfields,它永远不会等于任何字符串。

另外,你的用户和密码阵列具有长度11,所以他们的最高指数为10,但在

if (index < 12) 

您检查指数低于12,并增加了,所以你使用的索引可以12,如果您创建的用户超过10个,则会导致IndexOutOfBoundsException

要分配后解决这个问题,增量指标,如果里面的

user[index]=txtUsername.getText(); 
pas[index]=Password.getText(); 
index++; 

突破和比较文字,而不是域本身

if ((txtUsername.getText().equals(user[c])) && (Password.getText().equals(user[c]))) { 
    AlertBox.display("OK", " Welcome to your account"); 
    break; 
} 

并检查指数低于11

if (index < 11) { 
    ... 
} 
+0

正如你所看到的,我编辑了我的程序,但它仍然没有工作寿:我很抱歉,这可能是一个愚蠢的事情了.. – TinaXx

+0

你用'[c]'比较'txtUsername'和用'pas [c]'输入密码', 第一个是Inputfields,第二个是字符串,它们永远不会相等。 只需将'txtUsername.equals(..)'更改为'txtUsername.getText()。equals(..)' ,并使用'Password'完成相同操作。 – mrBrown

+0

现在有用,谢谢! – TinaXx

相关问题