【问题标题】:How to bind the password field Prompt Text Property to the result of a method in Javafx?如何将密码字段提示文本属性绑定到 Javafx 中方法的结果?
【发布时间】:2020-06-20 22:09:19
【问题描述】:

我使用 JFXPasswordField 和 Label Float 'ON'。所以我需要在用户输入pass的时候根据输入的强度来改变提示。

我需要将 pass 字段的属性文本绑定到其强度,该强度是在一个返回字符串作为强度的函数中计算的。

方法如下:

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 输入变量,因为我在 Controller 中有引用。

【问题讨论】:

  • 您能详细说明一下吗?您是否尝试在文本更改时更改 TextProperty?
  • 我要在文本更改时更改提示文本

标签: java javafx bind


【解决方案1】:

你快到了,我会这样做

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

正如您所注意到的,我有一个 password 变量(我希望)是一个标签,还有一个 myPasswordField 是一个 JFXPasswordField。

(密码)文本字段的“提示文本”仅在字段为空时可见。更好的名称是“占位符”,因为它是用于内容信息/提示的。如果你想要一个弹出消息,你需要自己实现它(使用类似PopupControlTooltip)。

【讨论】:

  • 我编辑了代码。我实际上在控制器中有 pass 字段的引用,因此该方法没有输入,所以我使用了“this::getPassQuality”。我忘了从原型中删除它。
  • 答案仍然是我能想到的。如果这还不足以解决问题,请向我们提供您想要达到的目标的清晰解释
  • 我使用 JFXPasswordField 和 Label Float 'ON'。所以我需要在用户输入pass时根据输入的强度来改变提示。
  • 谢谢。有效。实际上需要“myPasswordField.textProperty()”部分:)
猜你喜欢
  • 2023-03-12
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 2012-02-26
相关资源
最近更新 更多