如何设置JavaFX密码字段echo char

How to set JavaFX password field echo char

在 Swing 中,我可以使用 setEchoChar:

设置回显字符
new JPasswordField().setEchoChar('*');

我如何在 JavaFX 中做同样的事情?

有点难看,但是...密码掩码字符已硬编码到默认皮肤中。

您需要做的是创建自己的皮肤并实现自己的遮罩功能。

现有功能请求更灵活的密码屏蔽功能:

如果有人有兴趣为 JavaFX 开发贡献 open-jfx 项目,这将是一个很好的简单开始方式...


作为背景,这里是 JavaFX 8 的制作代码com.sun.javafx.scene.control.skin.TextFieldSkin.java

// For use with PasswordField
public static final char BULLET = '\u2022';
. . .
@Override protected String maskText(String txt) {
    if (getSkinnable() instanceof PasswordField) {
        int n = txt.length();
        StringBuilder passwordBuilder = new StringBuilder(n);
        for (int i = 0; i < n; i++) {
            passwordBuilder.append(BULLET);
        }

        return passwordBuilder.toString();
    } else {
        return txt;
    }
}

因此您可以看到 com.sun class 并没有使其可配置。

You should just be able to use CSS styling for it.

例如,为了使回显字符为“-”:

PasswordField passwordField = new PasswordField();
passwordField.setStyle("-fx-echo-char: -;");