Как связать поле пароля Prompt Text Property с результатом метода в Javafx? - PullRequest
0 голосов
/ 21 июня 2020

Я использую JFXPasswordField и Label Float 'ON'. Поэтому мне нужно изменить приглашение, пока пользователь вводит проход в соответствии с силой ввода.

Мне нужно привязать текст свойства поля прохода к его силе, которая вычисляется в функции, которая возвращает строку в качестве силы.

Вот метод:

private String getPassStrength() {
    int strength = foo(passwordField.getText());
    if (strength < 4) {
        return "Password is weak";
    } else {
        return "Password is good";
    }
}

И я использовал различные типы привязок, такие как StringProperty и CreateStringBinding, но ни один из них не работал.

Например:

passwordField.promptTextProperty().bind(Bindings.createStringBinding(this::getPassQuality));

Есть ли способ решить эту проблему?

Изменить:

Предыдущая ссылка "пароль" на самом деле была "полем пароля" Входная переменная Pass Field была опущена, потому что у меня есть ссылка в контроллере.

1 Ответ

2 голосов
/ 21 июня 2020

Вы почти у цели, я бы сделал это следующим образом

password.promptTextProperty().bind(Bindings.createStringBinding(() - > this.getPassStrength(), myPasswordField.textProperty()));

Как вы заметили, у меня есть переменная password, которая (я надеюсь) является меткой, и myPasswordField, которая является JFXPasswordField.

«promptText» текстового поля (пароля) отображается только тогда, когда поле пусто. Лучшим названием для него было бы «заполнитель», поскольку он предназначен для информации / подсказки. Если вы хотите вместо этого всплывающее сообщение, вам нужно реализовать его самостоятельно (используя что-то вроде PopupControl или Tooltip).

...