如何设置JavaFX密码字段echo char

时间:2015-03-28 14:39:37

标签: java javafx

在Swing中,我可以使用setEchoChar设置echo char:

new JPasswordField().setEchoChar('*');

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

2 个答案:

答案 0 :(得分:2)

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

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

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

如果有人有兴趣为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类无法使其可配置。

答案 1 :(得分:1)

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

示例,为了使回声字符为“ - ”:

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