Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Java - Finestra login

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    3

    Java - Finestra login

    Ciao,
    so che probabilmente la sezione sarà sbagliata ma non trovavo nessun altro posto dove fare domande riguardo a Java (nello specifico JavaFX).
    avevo un problema con il codice di una finestra di LogIn. Fino ad averla creata ci sono, il mio problema è che volevo fare in modo che dopo 3 tentativi con password errata la finestra si chiudesse (magari mostrando un alert ma quello potrei essere in grado di farlo anch'io, forse. Il punto è come contare i tre tentativi).
    Se avete anche altri tipi di LogIn che fanno la stessa cosa ma con codice diverso va bene comunque.
    Spero di essere stato chiaro e grazie
    //codice:
    package login;


    import javafx.application.Application;
    import javafx.geometry.Insets;
    import javafx.geometry.Pos;
    import javafx.scene.Scene;
    import javafx.scene.control.Alert;
    import javafx.scene.control.Alert.AlertType;
    import javafx.scene.control.Button;
    import javafx.scene.control.PasswordField;
    import javafx.scene.layout.GridPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.paint.Color;
    import javafx.scene.text.Font;
    import javafx.scene.text.FontWeight;
    import javafx.scene.text.Text;
    import javafx.stage.Stage;
    import javafx.scene.control.Label;
    import javafx.scene.control.TextField;




    public class AppLogin extends Application {

    // sovrascrivo il metodo start
    @Override
    public void start (Stage primaryStage) {




    //nodo radice, con gridPane
    GridPane griglia = new GridPane();
    griglia.setAlignment(Pos.CENTER);
    griglia.setHgap(10);
    griglia.setVgap(10);
    griglia.setPadding(new Insets(25, 25, 25, 25));

    //definisco la scena, associandola alla istanza di gridpane
    Scene scena = new Scene(griglia, 350, 300);
    // associo la scena con il palcoscenico
    primaryStage.setScene(scena);

    //posiziono nella griglia etichette e campi di testo
    // crea testo
    Text sceneTitle = new Text("Benvenuto");
    // definisce fonti caratteri
    sceneTitle.setFont(Font.font("Verdana", FontWeight.NORMAL, 22));
    //aggiunge testo nella cella con indici (0,0) dove: (colonna,riga)
    //aggiunge offset
    griglia.add(sceneTitle, 0,0,2,1);

    //crea etichetta nella cella con indici (0,1)
    Label userName = new Label("Nome Utente:");
    griglia.add(userName, 0, 1);

    //crea un campo di testo nella cella con indici (1,1)
    TextField userTextField = new TextField();
    griglia.add(userTextField,1 ,1);


    //crea campo password nella cella con indici (1,2)
    PasswordField pwBox = new PasswordField();
    griglia.add(pwBox,1,2);

    // crea pulsante
    Button btn = new Button("Login");

    //crea HBox e lo posizione e ci aggiunge il pulsante
    HBox hbBtn = new HBox(10);
    hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
    hbBtn.getChildren().add(btn);
    //aggiunge tutto nella cella (1,4)
    griglia.add(hbBtn,1,4);

    //crea etichetta e la posiziona in cella (1,5)
    final Label actionTarget = new Label("");
    griglia.add(actionTarget,1,5);




    //definisce azione pulsante confrontando password con "miaPassword"
    // se diversa o uguale comunica risultato su etichetta actiontarget

    btn.setOnAction((ActionEvent) ->
    {

    if(!pwBox.getText().equals("miaPassword"))
    {
    actionTarget.setText("Password errata");
    actionTarget.setTextFill(Color.DARKRED);

    }
    else
    {
    actionTarget.setText("Password corretta");
    actionTarget.setTextFill(Color.DARKGREEN);

    }
    pwBox.clear();

    });


    //definisce titolo finestra
    primaryStage.setTitle("LogIn");
    primaryStage.show();

    }




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


    }
    Ultima modifica di font123; 16-06-2017 a 13:04

  2. #2
    ciao!

    - hai sbagliato sezione -> java != javascript
    - meglio che metti il codice tra i rispettivi tag
    - potresti fare una cosa del genere: tieni un contatore, che incrementi quando le credenziali sono sbagliate; quando avvii il metodo per fare il login, controlli se il contatore è minore di 3

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    3
    ciao!
    non trovavo la sezione di java

    comunque il contatore era quello a cui avevo pensato anch'io (e sinceramente non so se esistano tanti altri metodi o se ne esistano di migliori), il problema è che non so come e dove inserirlo, dopo un paio di prove non sono riuscito a fare niente di funzionante

  4. #4
    Sposto in Java

  5. #5
    variabile di istanza ad esempio:

    codice:
    import javafx.application.Application;
    import javafx.geometry.Insets;
    import javafx.geometry.Pos;
    import javafx.scene.Scene;
    import javafx.scene.control.Alert;
    import javafx.scene.control.Alert.AlertType;
    import javafx.scene.control.Button;
    import javafx.scene.control.PasswordField;
    import javafx.scene.layout.GridPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.paint.Color;
    import javafx.scene.text.Font;
    import javafx.scene.text.FontWeight;
    import javafx.scene.text.Text;
    import javafx.stage.Stage;
    import javafx.scene.control.Label;
    import javafx.scene.control.TextField;
    
    public class AppLogin extends Application {
    
        private int contantore = 0;
        
    // sovrascrivo il metodo start
        @Override
        public void start(Stage primaryStage) {
    
    //nodo radice, con gridPane
            GridPane griglia = new GridPane();
            griglia.setAlignment(Pos.CENTER);
            griglia.setHgap(10);
            griglia.setVgap(10);
            griglia.setPadding(new Insets(25, 25, 25, 25));
    
    //definisco la scena, associandola alla istanza di gridpane
            Scene scena = new Scene(griglia, 350, 300);
    // associo la scena con il palcoscenico
            primaryStage.setScene(scena);
    
    //posiziono nella griglia etichette e campi di testo
    // crea testo
            Text sceneTitle = new Text("Benvenuto");
    // definisce fonti caratteri
            sceneTitle.setFont(Font.font("Verdana", FontWeight.NORMAL, 22));
    //aggiunge testo nella cella con indici (0,0) dove: (colonna,riga)
    //aggiunge offset
            griglia.add(sceneTitle, 0, 0, 2, 1);
    
    //crea etichetta nella cella con indici (0,1)
            Label userName = new Label("Nome Utente:");
            griglia.add(userName, 0, 1);
    
    //crea un campo di testo nella cella con indici (1,1)
            TextField userTextField = new TextField();
            griglia.add(userTextField, 1, 1);
    
    //crea campo password nella cella con indici (1,2)
            PasswordField pwBox = new PasswordField();
            griglia.add(pwBox, 1, 2);
    
    // crea pulsante
            Button btn = new Button("Login");
    
    //crea HBox e lo posizione e ci aggiunge il pulsante
            HBox hbBtn = new HBox(10);
            hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
            hbBtn.getChildren().add(btn);
    //aggiunge tutto nella cella (1,4)
            griglia.add(hbBtn, 1, 4);
    
    //crea etichetta e la posiziona in cella (1,5)
            final Label actionTarget = new Label("");
            griglia.add(actionTarget, 1, 5);
    
    //definisce azione pulsante confrontando password con "miaPassword"
    // se diversa o uguale comunica risultato su etichetta actiontarget
            btn.setOnAction((ActionEvent)
                    -> {
    
                // FAI PRIMA IL CONTROLLO SUL CONTATORE
                if (!pwBox.getText().equals("miaPassword")) {
                    actionTarget.setText("Password errata");
                    actionTarget.setTextFill(Color.DARKRED);
                    // INCREMENTI CONTATORE
                } else {
                    actionTarget.setText("Password corretta");
                    actionTarget.setTextFill(Color.DARKGREEN);
                    // RESETTI IL CONTANTORE
                }
                pwBox.clear();
    
            });
    
    //definisce titolo finestra
            primaryStage.setTitle("LogIn");
            primaryStage.show();
    
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    non l'ho testato ovviamente.
    ti ho messo solo i commenti.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    3
    provato e funziona
    era un po quello che avevo fatto io ma non avevo capito bene come gestirlo nella lambda function, grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.