JavaFX TextInputDialog для пароля (маскирование) - PullRequest
0 голосов
/ 18 декабря 2018

Я не нашел простого решения для моей проблемы.Я хочу использовать TextInputDialog, где вы должны ввести свой пароль пользователя, чтобы сбросить все данные в базе данных.Проблема TextInputDialog заключается в том, что он не маскирует текст, и я не знаю никакой возможности сделать это.

Мой код:

public void buttonReset() {
        TextInputDialog dialog = new TextInputDialog("Test");
        dialog.setTitle("Alle Daten löschen");
        dialog.setHeaderText("Sind Sie sich ganz sicher? Damit werden alle im Programm vorhandenen Daten gelöscht.");
        dialog.setContentText("Bitte geben Sie zur Bestätigung ihr Passwort ein:");
        Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image("/icons8-blockchain-technology-64.png"));

        Optional<String> result = dialog.showAndWait();
        if (result.isPresent()){
            try {
                if (connector.checkUserPassword(userName, result.get())) {
                    System.out.println("Your name: " + result.get());
                } else {
                    exc.alertWrongPassword();
                    buttonReset();
                }
            } catch (TimeoutException te) {
                te.printStackTrace();
                exc.alertServerNotReached();
            }
        }

Так есть ли возможностьдиалог или что-то для маскировки TextInput?

1 Ответ

0 голосов
/ 18 декабря 2018

Хотя могут быть и другие способы решения этой проблемы, я бы порекомендовал реализовать настраиваемый диалог в соответствии с вашими требованиями.Таким образом, вы можете больше контролировать вещи.

public void buttonReset() {
    Dialog<String> dialog = new Dialog<>();
    dialog.setTitle("Alle Daten löschen");
    dialog.setHeaderText("Sind Sie sich ganz sicher? Damit werden alle im Programm vorhandenen Daten gelöscht.");
    dialog.setGraphic(new Circle(15, Color.RED)); // Custom graphic
    dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);

    PasswordField pwd = new PasswordField();
    HBox content = new HBox();
    content.setAlignment(Pos.CENTER_LEFT);
    content.setSpacing(10);
    content.getChildren().addAll(new Label("Bitte geben Sie zur Bestätigung ihr Passwort ein:"), pwd);
    dialog.getDialogPane().setContent(content);
    dialog.setResultConverter(dialogButton -> {
        if (dialogButton == ButtonType.OK) {
            return pwd.getText();
        }
        return null;
    });

    Optional<String> result = dialog.showAndWait();
    if (result.isPresent()) {
        System.out.println(result.get());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...