2017-03-21 1 views
0

Wirklich weiß nicht, was hier zu tun? Irgendeine Hilfe auf, wo meine nächste Bewegung sein könnte, damit ich das aufstellen und laufen könnte, würde sehr geschätzt werden! Ich suche, diese Anmeldeanwendung in meinem nächsten Klassenprojekt zu rollen, indem Sie ein Kombinationsfeld mit diesem Anmeldebildschirm verwenden. Wenn jemand irgendwelche Vorschläge hat, was ich falsch machen soll oder wenn mein Code besser geschrieben werden könnte, wäre das fantastisch.Benutzername und Passwort sind immer falsch mit benutzerdefinierten javafx Login-Dialog

import javafx.application.Application; 
import javafx.scene.control.Dialog; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.control.PasswordField; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.GridPane; 
import javafx.stage.Stage; 
import javafx.scene.control.*; 
import javafx.util.Pair; 
import javafx.geometry.Insets; 
import java.util.Optional; 


public class LoginPassword extends Application { 
    @Override 
    public void start(Stage primaryStage) { 

     Dialog<Pair<String, String>> dialog = new Dialog<>(); 
     dialog.setTitle("Login"); 
     dialog.setHeaderText("Enter your username and password"); 



     ButtonType loginButtonType = new ButtonType("Login", ButtonBar.ButtonData.OK_DONE); 
     dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL); 


     GridPane grid = new GridPane(); 
     grid.setHgap(10); 
     grid.setVgap(10); 
     grid.setPadding(new Insets(20, 150, 10, 10)); 

     TextField username = new TextField(); 
     username.setPromptText("Username"); 
     PasswordField password = new PasswordField(); 
     password.setPromptText("Password"); 

     grid.add(new Label("Username:"), 0, 0); 
     grid.add(username, 1, 0); 
     grid.add(new Label("Password:"), 0, 1); 
     grid.add(password, 1, 1); 


     dialog.getDialogPane().setContent(grid); 

     Optional<Pair<String, String>> input = dialog.showAndWait(); 
     System.out.println(input.get()); 


     if (username.equals("dom123")) { 

      if (password.equals("d123")) { 
       Alert alert = new Alert(Alert.AlertType.INFORMATION); 
       alert.setHeaderText("You have been logged in"); 
       alert.setContentText("Welcome" + username); 

       return; 

      } else { 
       int passwordattempts = 1; 
       while (passwordattempts < 3) { 
        dialog.showAndWait(); 
        passwordattempts++; 
       } 
      } 
      Alert alert = new Alert(Alert.AlertType.INFORMATION); 
      alert.setContentText("Contact Admin"); 
      alert.showAndWait(); 

     } else { 
      int usernameattempts = 1; 
      while (usernameattempts < 3) { 
       dialog.showAndWait(); 
       usernameattempts++; 
      } 
      Alert alert = new Alert(Alert.AlertType.INFORMATION); 
      alert.setContentText("Invalid Username"); 
      alert.showAndWait(); 
     } 
    } 


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





**strong text** 

Antwort

1

ändern

if (username.equals("dom123")) { 

    if (password.equals("d123")) { 

zu

if(String.valueOf(username.getText()).equals("dom123")){ 
    if(String.valueOf(password.getText()).equals("d123")){ 

Da Benutzername und Passwort Variablen nur Verweise auf den Benutzernamen Textfeld und ein Passwort Textfeld sind, nicht der tatsächliche Wert in ihnen gespeichert, so dass Sie müssen den Text, der in ihnen gespeichert ist, mit getText() -Methode abrufen.

+0

Vielen Dank! Es funktioniert, aber jetzt gibt es ein Problem mit dem Erhalten meiner Willkommensnachricht zu erscheinen, Zeit, ein wenig zu fummeln. – Aminal

+0

Upvote 4 Leben! : D –

+1

Er kann sicher upvote, weil er 1 rep nur so weit hat.Aber wenn Sie einen Satz auf "sogar mit der festen wenn Bedingung Ihren Code nicht viel Sinn" enthalten ... Sie werden meine Stimme bekommen. – GhostCat

Verwandte Themen