JavaFX

Login-Dialog, Beispiel

Hier ist eine kleine beispielhafte JavaFx-Anwendung mit einem Login-Dialog:


package kdr.main;
 
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.ButtonBar.ButtonData;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.util.Pair;
 
/**
 * a login dialog
 */
public class LoginDlg extends Dialog {
 
   public LoginDlg() {
      setTitle("Login");
      setHeaderText("Bitte melden Sie sich an!");
 
      initGUI();
   }
 
   private void initGUI() {
      // Create the username and password labels and fields:
      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);
 
 
      ButtonType loginButtonType = new ButtonType("Login", ButtonData.OK_DONE);
      getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
 
      // Initiales enable/disable für den Login-Button:
      Node loginButton = getDialogPane().lookupButton(loginButtonType);
      loginButton.setDisable(true);
 
      // Enable/disable für den Login-Button abhängig von der Eingabe:
      username.textProperty().addListener((observable, oldValue, newValue) -> {
         loginButton.setDisable(newValue.trim().isEmpty());
      });
 
      getDialogPane().setContent(grid);
 
      // Das Ergebnis der Eingabe abrufbar machen:
      setResultConverter(dialogButton -> {
         if (dialogButton == loginButtonType) {
            return new Pair<>(username.getText(), password.getText());
         }
         return null;
      });
 
      // Den Focus auf das Textfeld für den Namen stetzen:
      Platform.runLater(() -> username.requestFocus());
   }
}


Beipsielanwendung:

package com.sowas.javawiki.javafx;
 
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
 
public class MyFxApplication extends Application {
 
   @Override
   public void start(Stage mainStage) {
      LoginDlg loginDlg = new LoginDlg();
      Optional<Pair<String, String>> result = loginDlg.showAndWait();

      result.ifPresent(usernamePassword -> {
         System.out.println("Username=" + usernamePassword.getKey() + ", Password=" + usernamePassword.getValue());
      });
   }
 
   public static void main(String[] args) {
      launch(args);
   }
}


Stichworte:

JavaFX Logindialog, Beispielanwendung, Example

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007